home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 2 / Gekikoh Dennoh Club Vol. 2 (Japan).7z / Gekikoh Dennoh Club Vol. 2 (Japan) (Track 01).bin / fsw / zm302 / zm302_s.lzh / ZSV.HAS < prev    next >
Text File  |  1997-08-22  |  141KB  |  6,616 lines

  1. *************************************************
  2. *                        *
  3. *          ZSV.R             *
  4. *                        *
  5. *        PROGRAMMED BY Z.N        *
  6. *                        *
  7. *************************************************
  8.     .include    zmcall.mac
  9.     .include    zmd.mac
  10.     .include    iocscall.mac
  11.     .include    doscall.mac
  12.     .include    label.mac
  13.     .include    zmid.mac
  14.     .include    z_global.mac
  15.     .include    table.mac
  16.     .include    version.mac
  17.     .offset        0
  18.     .include    common.mac
  19.     .offset        0
  20.     .include    zm_stat.mac
  21.     .text
  22.     .cpu    68000
  23. trn:        equ    32    *キャラクタ画面の縦の文字数
  24. *zsv_v_code:    equ    $01    *バージョンID
  25. *zsv_v_code_:    equ    $04    *バージョンID端数
  26. disp_max:    equ    10
  27. palet00:    equ    $00
  28. palet10:    equ    $10
  29. palet20:    equ    $20
  30. palet30:    equ    $30
  31. palet40:    equ    $40
  32. palet50:    equ    $50
  33. palet60:    equ    $60
  34. palet70:    equ    $70
  35. palet80:    equ    $80
  36. palet90:    equ    $90
  37. paleta0:    equ    $a0
  38. paletb0:    equ    $b0
  39. paletc0:    equ    $c0
  40. paletd0:    equ    $d0
  41. palete0:    equ    $e0
  42. paletf0:    equ    $f0
  43. dtsz:        equ    256    *ZSVが必要とする1トラック当たりのワークサイズ
  44.             *(表示パラメータ数(22)+PM・SW/AM・SWトラックステータス(1))*2=50
  45. *dsl:    equ    def_scr_e-def_scr
  46. opm_data_size:    equ    1024    *((11op_reg*4ops)+5ch_reg)*8chs)*2 bytes=784+α
  47. b_disp_mod:    equ    0
  48. b_disp_vol:    equ    1
  49. KRPT:        equ    20    *キーリピート開始までのディレイタイム
  50.  
  51. Z_MUSIC    macro    func        *ドライバへのファンクションコール
  52.     moveq.l    func,d0
  53.     trap    #3
  54.     endm
  55.  
  56. _version    macro
  57.     dc.b    (v_code/16)+$30,'.',($0f.and.v_code)+$30,v_code_+$30
  58.     endm
  59.  
  60. *zsv_version    macro
  61. *    dc.b    ' ',$f3,(zsv_v_code/16)+$30,$f3,'.',$f3,($0f.and.zsv_v_code)+$30,$f3,zsv_v_code_+$30
  62. **    dc.b    $f3,'h'
  63. *    endm
  64.  
  65. draw    macro    x,y
  66.     lea    $e00000+x+$80*y*8,a1
  67.     endm
  68.  
  69. bitsns    macro    n        *IOCS    _BITSNSと同等に機能する
  70.     move.b    $800+n.w,d0
  71.     endm
  72.  
  73. reduce_vol    macro    reg
  74.     * < reg.w=-32768~+32767
  75.     * > reg.w=0~+127
  76.     local    rav0
  77.     local    rav1
  78.     tst.w    reg
  79.     bpl    rav0
  80.     moveq.l    #0,reg
  81.     bra    rav1
  82. rav0:
  83.     cmpi.w    #127,reg
  84.     ble    rav1
  85.     move.w    #127,reg
  86. rav1:
  87.     endm
  88. *-----------------------------------------------
  89. *        プログラムスタート
  90. *-----------------------------------------------
  91.     lea    mysp(pc),sp
  92.     lea    zsv_work(pc),a6
  93.     move.l    a3,env_bak-zsv_work(a6)    *環境変数アドレス格納
  94.  
  95.     lea    font_data(pc),a1
  96.     move.l    a1,font_addr-zsv_work(a6)
  97.     lea    __opn_fn(pc),a1
  98.     move.l    a1,open_fn-zsv_work(a6)
  99.  
  100.     lea    end_of_prog(pc),a1    *program end address+1
  101.     lea    $10(a0),a0        *メモリブロックの変更
  102.     suba.l    a0,a1
  103.     pea    (a1)
  104.     pea    (a0)
  105.     DOS    _SETBLOCK
  106.     addq.w    #8,sp
  107.     tst.l    d0
  108.     bmi    out_of_memory
  109.     suba.l    a1,a1
  110.     IOCS    _B_SUPER
  111.     move.l    d0,ssp-zsv_work(a6)
  112.  
  113.     move.l    #$10000,-(sp)
  114.     DOS    _MALLOC
  115.     addq.w    #4,sp
  116.     tst.l    d0
  117.     bmi    out_of_memory
  118.     add.l    #$10000,d0
  119.     move.l    d0,sp
  120.  
  121.     move.w    #2,-(sp)
  122.     pea    title_mes(pc)
  123.     DOS    _FPUTS
  124.     addq.w    #6,sp
  125.  
  126.     tst.b    $0cbc.w            *MPUが68000ならキャッシュフラッシュ必要無し
  127.     bne    @f
  128.     move.w    #RTS,cache_flush-zsv_work(a6)
  129. @@:
  130. *    move.l    #$1_0000,-(sp)    *!debug
  131. *    DOS    _MALLOC        *!debug
  132. *    addq.w    #4,sp        *!debug
  133. *    tst.l    d0        *!debug
  134. *    bmi    out_of_memory    *!debug
  135. *    move.l    d0,adr-zsv_work(a6)    *!debug
  136.  
  137.     pea    zmsc3_fader(pc)    *フェーダースピードの取得
  138.     bsr    search_env
  139.     addq.w    #4,sp
  140.     tst.l    d0
  141.     beq    2f
  142.     move.l    a2,-(sp)
  143.     move.l    d0,a2
  144.     bsr    chk_num
  145.     bmi    1f
  146.     bsr    get_num
  147.     tst.l    d1
  148.     bpl    @f
  149.     neg.l    d1
  150. @@:
  151.     cmpi.l    #65535,d1
  152.     bhi    1f
  153.     move.w    d1,fadeout_speed-zsv_work(a6)
  154.     move.w    d1,fadein_speed-zsv_work(a6)
  155.     bsr    skip_sep
  156.     bsr    chk_num
  157.     bmi    1f
  158.     bsr    get_num
  159.     tst.l    d1
  160.     bpl    @f
  161.     neg.l    d1
  162. @@:
  163.     cmpi.l    #65535,d1
  164.     bhi    1f
  165.     move.w    d1,fadein_speed-zsv_work(a6)
  166. 1:
  167.     move.l    (sp)+,a2
  168. 2:
  169.     pea    zsv_opt(pc)        *'zsv_opt'
  170.     bsr    search_env
  171.     addq.w    #4,sp
  172.     tst.l    d0
  173.     beq    @f
  174.     move.l    a2,-(sp)
  175.     move.l    d0,a2
  176.     bsr    chk_optsw        *オプションスイッチ
  177.     move.l    (sp)+,a2
  178. @@:
  179.     tst.b    (a2)+
  180.     beq    go_mon
  181.     pea    go_mon(pc)
  182. chk_optsw:
  183. chkoptswlp:
  184.     move.b    (a2)+,d0
  185.     cmpi.b    #' ',d0
  186.     bcs    @f
  187.     cmpi.b    #'-',d0
  188.     beq    chk_sw
  189.     cmpi.b    #'/',d0
  190.     beq    chk_sw
  191.     bra    chkoptswlp
  192. @@:
  193.     rts
  194. chk_sw:
  195.     move.b    (a2)+,d0
  196.     andi.b    #$df,d0
  197.     cmpi.b    #'F',d0
  198.     beq    read_font
  199.     cmpi.b    #'I',d0        *マスク初期化禁止スイッチ
  200.     beq    non_mask
  201.     cmpi.b    #'J',d0        *メッセージ表示モード
  202.     beq    japanese_mode
  203.     cmpi.b    #'P',d0        *パンポット表示モード
  204.     beq    lr_pan_mode
  205.     cmpi.b    #'R',d0        *モジュレーションリアルタイム表示モード
  206.     beq    realtime_mode
  207.     cmpi.b    #'V',d0        *音量/ベロシティグラフ表示モード
  208.     beq    volvelo_mode
  209.     bra    print_hlp
  210.  
  211. non_mask:
  212.     clr.b    init_mask-zsv_work(a6)
  213.     bra    chkoptswlp
  214.  
  215. japanese_mode:
  216.     move.b    #1,lang-zsv_work(a6)    *日本語モード
  217.     bra    chkoptswlp
  218.  
  219. lr_pan_mode:
  220.     eori.b    #1,pan_mode-zsv_work(a6)
  221.     bra    chkoptswlp
  222.  
  223. realtime_mode:
  224.     bchg.b    #b_disp_mod,disp_mode-zsv_work(a6)
  225.     bra    chkoptswlp
  226.  
  227. volvelo_mode:
  228.     bchg.b    #b_disp_vol,disp_mode-zsv_work(a6)
  229.     bra    chkoptswlp
  230.  
  231. read_font:
  232. reglist    reg    d1-d2/d5/a1
  233.     movem.l    reglist,-(sp)
  234.     lea    filename(pc),a1
  235.     bsr    skip_spc
  236.     moveq.l    #0,d1
  237.     moveq.l    #0,d2
  238. 1:
  239.     move.b    (a2)+,d0
  240.     cmpi.b    #'.',d0
  241.     bne    @f
  242.     bset.l    #31,d2
  243. @@:
  244.     cmpi.b    #' ',d0
  245.     bls    1f
  246.     move.b    d0,(a1)+
  247.     addq.w    #1,d1
  248.     tst.l    d2
  249.     bpl    @f
  250.     addq.w    #1,d2
  251.     cmpi.w    #4,d2        *'.'も含めて拡張子は3文字まで
  252.     beq    1f
  253. @@:
  254.     cmpi.w    #96,d1
  255.     bcs    1b
  256. 1:
  257.     clr.b    (a1)+
  258.     move.l    a2,-(sp)
  259.     lea    filename(pc),a2
  260.     bsr    fopen
  261.     move.l    (sp)+,a2
  262.     tst.l    d5
  263.     bmi    file_not_found
  264.  
  265.     move.l    #2048+1024,-(sp)    *+1024は念のため(2048~2079:はパレットテーブル)
  266.     DOS    _MALLOC
  267.     addq.w    #4,sp
  268.     move.l    d0,font_addr-zsv_work(a6)
  269.     bmi    out_of_memory
  270.  
  271.     move.l    #2048+1024,-(sp)        *push size
  272.     move.l    font_addr(pc),-(sp)    *push addr
  273.     move.w    d5,-(sp)        *file handle
  274.     DOS    _READ
  275.     lea    10(sp),sp
  276.     cmpi.l    #2080,d0
  277.     seq    ext_palet-zsv_work(a6)
  278.  
  279.     move.w    d5,-(sp)    *close
  280.     DOS    _CLOSE
  281.     addq.l    #2,sp
  282.  
  283.     movem.l    (sp)+,reglist
  284.     bra    chkoptswlp
  285.  
  286. print_hlp:            *ヘルプ
  287.     lea    hlp_mes(pc),a1
  288.     bsr    bil_prta1
  289.  
  290.     move.w    #1,-(sp)
  291.     DOS    _EXIT2
  292.  
  293. bil_prta1:                *日本語対応
  294.     tst.b    lang-zsv_work(a6)    *0:英語か 1:日本語か
  295.     beq    prta1
  296. @@:                    *次のメッセージをゲット
  297.     tst.b    (a1)+
  298.     bne    @b
  299. prta1:                    *non_disp!=0のときはRTS
  300.     * x d0.l
  301.     move.w    #2,-(sp)
  302.     pea    (a1)
  303.     DOS    _FPUTS
  304.     addq.w    #6,sp
  305.     rts
  306.  
  307. go_mon:
  308.     bsr    chk_drv        *ドライバ常駐チェック
  309.     bsr    init        *画面初期化
  310.     IOCS    _OS_CUROF
  311.                 *96×33にする
  312.     move.w    #$0020,$00e8000c
  313.     move.w    #$0230,$00e8000e
  314.     move.w    #trn,$972.w    *IOCSワークへ直接書き込む
  315.  
  316. *    clr.w    $e82202        *テキストパレットの設定(black)
  317. *    clr.w    $e82204        *テキストパレットの設定(black)
  318.  
  319.     bsr    key_bind_db    *キーバインド展開
  320.  
  321.     bsr    make_scrn
  322.  
  323.     moveq.l    #-1,d1
  324.     Z_MUSIC    #ZM_ZMUSIC_MODE
  325.     add.b    #$30,d0
  326. *    move.b    zm_ver(pc),d0
  327. *    lsr.b    #4,d0
  328. *    add.b    #$30,d0
  329.     lea    trk_seq_tbl(pc),a2
  330.     move.b    d0,(a2)
  331.     move.b    #'.',1(a2)
  332.     move.b    zm_ver(pc),d0
  333.     andi.b    #$0f,d0
  334.     add.b    #$30,d0
  335.     move.b    d0,2(a2)
  336.     move.b    zm_ver+1(pc),d0
  337.     andi.b    #$0f,d0
  338.     add.b    #$30,d0
  339.     move.b    d0,3(a2)
  340.     clr.b    4(a2)
  341.     draw    81,4
  342.     moveq.l    #palet30,d1
  343.     bsr    cgwr
  344.  
  345.     Z_MUSIC    #ZM_GET_TIMER_MODE    * > d0.l=timer type(0:tm_a  1:tm_b  2:tm_m)
  346.     move.l    #'OPM-',(a2)
  347.     move.b    #'A',4(a2)
  348.     clr.b    5(a2)
  349.     move.l    #$ffff0363,FF_timer-zsv_work(a6)
  350.     move.l    #$ffff0000,SL_timer-zsv_work(a6)
  351.     subq.b    #1,d0
  352.     bne    @f
  353.     move.b    #'B',4(a2)
  354.     move.l    #$ffff00f6,FF_timer-zsv_work(a6)
  355.     move.l    #$ffff0000,SL_timer-zsv_work(a6)
  356.     bra    disp_tmrmode
  357. @@:
  358.     subq.b    #1,d0
  359.     bne    disp_tmrmode
  360.     move.l    #'YM38',(a2)
  361.     move.w    #'02',4(a2)
  362.     clr.b    6(a2)
  363.     move.l    #$ffff0138,FF_timer-zsv_work(a6)
  364.     move.l    #$ffff1fff,SL_timer-zsv_work(a6)
  365. disp_tmrmode:
  366.     draw    72,5
  367.     bsr    cgwr
  368.  
  369.     moveq.l    #0,d1
  370.     Z_MUSIC    #ZM_GET_PLAY_WORK
  371.     lea    _seq_wk_tbl(pc),a4
  372.     move.l    a0,(a4)+        *_seq_wk_tbl
  373.     Z_MUSIC    #ZM_GET_TRACK_TABLE    *_play_trk_tbl
  374.     move.l    a0,(a4)+
  375.     Z_MUSIC    #ZM_GET_BUFFER_INFORMATION
  376.     move.l    a0,(a4)+        *_common_buffer
  377.     Z_MUSIC    #ZM_GET_ZMSC_STATUS
  378.     move.l    a0,(a4)+        *_zmusic_stat
  379.     move.l    wk_size(a0),_wk_size-zsv_work(a6)    *トラックワークの1トラック当たりのサイズ
  380.     lea    cf(a0),a0
  381.     move.l    a0,_cf-zsv_work(a6)        *fm音源のコネクション情報
  382.     moveq.l    #0,d1
  383.     move.l    d1,a1
  384.     Z_MUSIC    #ZM_SET_MASTER_CLOCK
  385.     move.l    a0,(a4)+        *_key
  386.  
  387.     movea.l    $84.w,a0    *PCM8の有無
  388.     cmpi.l    #'MPCM',-8(a0)
  389.     seq.b    mpcm_flg-zsv_work(a6)
  390.  
  391.     tst.b    init_mask-zsv_work(a6)    *マスク保存するかどうか
  392.     beq    @f
  393.     moveq.l    #0,d1
  394.     move.l    d1,a1
  395.     Z_MUSIC    #ZM_MASK_TRACKS
  396.     Z_MUSIC    #ZM_MASK_CHANNELS
  397. @@:
  398.     lea    global_data(pc),a0    *ワーク初期化
  399.     move.w    #(data_end-global_data)/4-1,d0
  400. @@:
  401.     clr.l    (a0)+
  402.     dbra    d0,@b
  403. *            G     R     B   I
  404.     lea    $e82200,a0
  405.     lea    std_palet(pc),a1
  406.     moveq.l    #16-1,d0
  407.     tst.b    ext_palet-zsv_work(a6)
  408.     beq    @f
  409.     move.l    font_addr-zsv_work(a6),a1
  410.     add.w    #2048,a1
  411. @@:
  412.     move.w    (a1)+,(a0)+
  413.     dbra    d0,@b
  414. main_lp:                    *メインルーチン
  415.     lea    global_data(pc),a4
  416. *    move.l    _trk_buffer_top(pc),d0
  417.     move.l    _common_buffer(pc),a5
  418.     move.l    (a5),d0
  419.     bne    @f
  420.     lea    dummy_data(pc),a5
  421.     move.l    #-1,-(sp)            *disp_barで使用
  422.     bra    disp_title
  423. @@:
  424.     move.l    d0,a5
  425.     move.l    z_total_count-8(a5),-(sp)    *disp_barで使用
  426. disp_title:                    *タイトル表示
  427.     move.l    z_title_offset-8(a5),d0
  428.     lea    z_title_offset-8+4(a5,d0.l),a2
  429.     lea    string(pc),a1
  430.     moveq.l    #0,d0
  431.     moveq.l    #0,d1
  432.     moveq.l    #96-1,d3
  433. @@:                        *チェックサムを取る
  434.     move.b    (a2)+,d2
  435.     beq    @f
  436.     cmpi.b    #' ',d2
  437.     bcs    @f
  438.     move.b    d2,(a1)+
  439.     add.b    d2,d0
  440.     eor.b    d2,d1
  441.     dbra    d3,@b
  442. @@:
  443.     lsl.w    #8,d1
  444.     or.w    d1,d0
  445.     tas.b    (a4)+
  446.     addq.w    #1,a4
  447.     beq    @f
  448.     cmp.w    (a4),d0
  449.     bne    @f
  450.     addq.w    #2,a4
  451.     bra    disp_meter1
  452. @@:
  453.     clr.b    (a1)                *endcode
  454.     lea    string(pc),a1
  455.     move.w    d0,(a4)+
  456.     bne    @f
  457.     lea    no_title(pc),a1    *タイトル無しの場合の文字列
  458. @@:
  459.     moveq.l    #3,d1        *atr
  460.     moveq.l    #0,d2        *x
  461.     moveq.l    #0,d3        *y
  462.     moveq.l    #96-1,d4    *len
  463.     IOCS    _B_PUTMES
  464. disp_meter1:
  465.     moveq.l    #0,d0
  466.     move.l    _meter(pc),a1
  467.     move.b    (a1),d0        *METER分子
  468.     tas.b    (a4)+
  469.     beq    @f
  470.     cmp.b    (a4),d0
  471.     bne    @f
  472.     addq.w    #1,a4
  473.     bra    disp_meter2
  474. @@:
  475.     move.b    d0,(a4)+
  476.     bsr    num_to_str
  477.     draw    7,2
  478.     lea    suji+8(pc),a2
  479.     moveq    #palet30,d1
  480.     bsr    cgwr
  481. disp_meter2:
  482.     moveq.l    #0,d0
  483.     move.l    _meter(pc),a1
  484.     move.b    1(a1),d0        *METER分母
  485.     tas.b    (a4)+
  486.     beq    @f
  487.     cmp.b    (a4),d0
  488.     bne    @f
  489.     addq.w    #1,a4
  490.     bra    disp_key
  491. @@:
  492.     move.b    d0,(a4)+
  493.     bsr    num_to_str
  494.     draw    10,2
  495.     lea    suji+8(pc),a2
  496.     moveq    #palet30,d1
  497.     bsr    cgwr
  498. disp_key:                *KEYの表示
  499.     move.l    _meter(pc),a1
  500.     moveq.l    #0,d0
  501.     move.w    4(a1),d0        *KEY(調号)
  502.     tas.b    (a4)+
  503.     addq.w    #1,a4            *even
  504.     beq    @f
  505.     cmp.w    (a4),d0
  506.     bne    @f
  507.     addq.w    #2,a4
  508.     bra    disp_usedchs
  509. @@:
  510.     move.w    d0,(a4)+
  511.     lea    KEY_v_tbl(pc),a1
  512.     moveq.l    #36-1,d1
  513. dklp:
  514.     cmp.w    (a1)+,d0
  515.     beq    @f
  516.     dbra    d1,dklp
  517.     lea    non_key(pc),a2
  518.     bra    do_dk
  519. @@:
  520.     moveq.l    #36-1,d0
  521.     sub.w    d1,d0
  522.     lsl.w    #3,d0
  523.     lea    KEY_tbl(pc),a2
  524.     add.w    d0,a2
  525. do_dk:
  526.     moveq.l    #palet30,d1
  527.     draw    19,2
  528.     bsr    cgwr
  529. disp_usedchs:                *使用チャンネル数の表示
  530.     draw    6,4
  531.     moveq.l    #if_max+2-1,d2
  532.     btst.b    #b_disp_mod,disp_mode-zsv_work(a6)
  533.     bne    realtime_usedchs
  534.     lea    z_nof_fm_ch-8(a5),a3
  535. usedchslp:
  536.     moveq.l    #0,d0
  537.     move.b    (a3)+,d0
  538.     tas.b    (a4)+
  539.     beq    @f
  540.     cmp.b    (a4),d0
  541.     bne    @f
  542.     addq.w    #1,a4
  543.     bra    next_usedchs
  544. @@:
  545.     move.b    d0,(a4)+
  546.     bsr    num_to_str
  547.     lea    suji+7(pc),a2
  548.     moveq    #palet30,d1
  549.     bsr    cgwr
  550. next_usedchs:
  551.     add.w    #11,a1
  552.     dbra    d2,usedchslp
  553.     bra    disp_pltm1
  554. realtime_usedchs:            *リアルタイムケース
  555.     lea    dev_tbl(pc),a3
  556. rltusvclp0:
  557.     move.w    (a3)+,d4
  558.     moveq.l    #0,d3
  559.     movea.l    _play_trk_tbl(pc),a0
  560. rltusvclp1:
  561.     move.w    (a0)+,d0
  562.     cmpi.w    #-1,d0
  563.     beq    disp_rltusvc
  564.     move.l    _seq_wk_tbl(pc),a2    *a2=track work addr
  565.     mulu    _wk_size(pc),d0
  566.     add.l    d0,a2
  567.     tst.b    p_track_stat(a2)
  568.     bne    rltusvclp1
  569.     tst.b    p_mask_mode(a2)
  570.     bne    rltusvclp1
  571.     cmp.w    p_type(a2),d4
  572.     bne    rltusvclp1
  573.     tst.w    d4
  574.     bmi    1f
  575.     move.b    p_how_many(a2),d0
  576.     addq.b    #1,d0
  577.     add.b    d0,d3
  578.     bra    rltusvclp1
  579. 1:
  580.     moveq.l    #max_note_on-1,d0
  581.     lea    p_note(a2),a2
  582. @@:
  583.     tst.l    (a2)+
  584.     bmi    rltusvclp1
  585.     addq.w    #1,d3
  586.     dbra    d0,@b
  587.     bra    rltusvclp1
  588. disp_rltusvc:
  589.     move.l    d3,d0
  590.     tas.b    (a4)+
  591.     beq    @f
  592.     cmp.b    (a4),d0
  593.     bne    @f
  594.     addq.w    #1,a4
  595.     bra    next_rltusvc
  596. @@:
  597.     move.b    d0,(a4)+
  598.     bsr    num_to_str
  599.     lea    suji+7(pc),a2
  600.     moveq    #palet30,d1
  601.     bsr    cgwr
  602. next_rltusvc:
  603.     add.w    #11,a1
  604.     dbra    d2,rltusvclp0
  605. disp_pltm1:                *演奏経過時間
  606.     Z_MUSIC    #ZM_GET_PLAY_TIME
  607.     tas.b    (a4)+
  608.     addq.w    #1,a4
  609.     beq    @f
  610.     cmp.l    (a4),d0
  611.     bne    @f
  612.     addq.w    #4,a4
  613.     bra    disp_pltm2
  614. @@:
  615.     move.l    d0,(a4)+
  616.     moveq.l    #palet30,d1
  617.     lea    suji+8(pc),a2
  618.     draw    55,2
  619.     move.l    d0,d2
  620.     andi.l    #$ff,d0
  621.     bsr    num_to_str
  622.     bsr    cgwr
  623.     move.l    d2,d0
  624.     lsr.w    #8,d0
  625.     andi.l    #$ff,d0
  626.     draw    52,2
  627.     bsr    num_to_str
  628.     bsr    cgwr
  629.     move.l    d2,d0
  630.     swap    d0
  631.     andi.l    #$ff,d0
  632.     draw    49,2
  633.     bsr    num_to_str
  634.     bsr    cgwr
  635. disp_pltm2:
  636.     move.l    z_play_time-8(a5),d0
  637.     tas.b    (a4)+
  638.     addq.w    #1,a4
  639.     beq    @f
  640.     cmp.l    (a4),d0
  641.     bne    @f
  642.     addq.w    #4,a4
  643.     bra    disp_prsntdt
  644. @@:
  645.     move.l    d0,(a4)+
  646.     moveq.l    #palet30,d1
  647.     lea    suji+8(pc),a2
  648.     draw    64,2
  649.     move.l    d0,d2
  650.     andi.l    #$ff,d0
  651.     bsr    num_to_str
  652.     bsr    cgwr
  653.     move.l    d2,d0
  654.     lsr.w    #8,d0
  655.     andi.l    #$ff,d0
  656.     draw    61,2
  657.     bsr    num_to_str
  658.     bsr    cgwr
  659.     move.l    d2,d0
  660.     swap    d0
  661.     andi.l    #$ff,d0
  662.     draw    58,2
  663.     bsr    num_to_str
  664.     bsr    cgwr
  665. disp_prsntdt:                *日付表示
  666.     DOS    _GETDATE
  667.     tas.b    (a4)+
  668.     addq.w    #1,a4
  669.     beq    @f
  670.     cmp.l    (a4),d0
  671.     bne    @f
  672.     addq.w    #4,a4
  673.     bra    disp_prsnttm
  674. @@:
  675.     move.l    d0,(a4)+
  676.     moveq.l    #palet30,d1
  677.     lea    suji+8(pc),a2
  678.     draw    80,2
  679.     move.l    d0,d2
  680.     andi.l    #31,d0
  681.     bsr    num_to_str
  682.     bsr    cgwr
  683.     move.l    d2,d0
  684.     lsr.w    #5,d0
  685.     andi.l    #$0f,d0
  686.     draw    77,2
  687.     bsr    num_to_str
  688.     bsr    cgwr
  689.     move.l    d2,d0
  690.     rol.w    #7,d0
  691.     andi.l    #$7f,d0
  692.     add.w    #1980,d0
  693.     draw    72,2
  694.     lea    suji+6(pc),a2
  695.     bsr    num_to_str
  696.     bsr    cgwr
  697.     move.l    d2,d0
  698.     swap    d0
  699.     lsl.w    #2,d0
  700.     lea    DAY_tbl(pc),a2
  701.     add.w    d0,a2
  702.     draw    83,2
  703.     bsr    cgwr
  704. disp_prsnttm:
  705.     DOS    _GETTIM2
  706.     tas.b    (a4)+
  707.     addq.w    #1,a4
  708.     beq    @f
  709.     cmp.l    (a4),d0
  710.     bne    @f
  711.     addq.w    #4,a4
  712.     bra    disp_agogik
  713. @@:
  714.     tas.b    f_wait-zsv_work(a6)    *点滅
  715.     move.l    d0,(a4)+
  716.     moveq.l    #palet30,d1
  717.     lea    suji+8(pc),a2
  718.     draw    94,2
  719.     move.l    d0,d2
  720.     andi.l    #63,d0
  721.     bsr    num_to_str
  722.     bsr    cgwr
  723.     move.l    d2,d0
  724.     lsr.w    #8,d0
  725.     andi.l    #63,d0
  726.     draw    91,2
  727.     bsr    num_to_str
  728.     bsr    cgwr
  729.     move.l    d2,d0
  730.     swap    d0
  731.     andi.l    #31,d0
  732.     draw    88,2
  733.     bsr    num_to_str
  734.     bsr    cgwr
  735. disp_agogik:                *アゴーギク振幅の表示
  736.     moveq.l    #-1,d1            *ask tempo
  737.     Z_MUSIC    #ZM_TEMPO
  738.     moveq.l    #0,d5
  739.     move.w    d0,d5
  740. agogik_base:    equ    agogik_work-pmod_param
  741.     move.l    _zmusic_stat(pc),a5
  742.     lea.l    agogik_base(a5),a5
  743.     moveq.l    #0,d0
  744.     tst.b    p_pmod_sw(a5)
  745.     beq    @f
  746.     btst.b    #b_pmod_first,p_pmod_flg(a5)    *!3/26
  747.     beq    @f                *!3/26
  748.     btst.b    #b_disp_mod,disp_mode-zsv_work(a6)
  749.     bne    agkrltm
  750.     moveq.l    #0,d1            *振幅表示
  751.     move.b    p_pmod_n(a5),d1
  752.     bmi    @f
  753.     move.w    p_pmod_dpt_now(a5),d0
  754.     btst.b    d1,p_pmod_omt(a5)
  755.     beq    @f
  756.     add.w    d1,d1
  757. *    move.w    p_pmod_pitch(a5),d0
  758. *    ext.l    d0
  759. *    add.l    d0,d5
  760.     move.w    p_pmod_dpt_tbl(a5,d1.w),d0
  761.     ext.l    d0
  762.     bra    @f
  763. agkrltm:                *リアルタイム表示ケース
  764.     move.w    p_pmod_pitch(a5),d0
  765.     ext.l    d0
  766.     add.l    d0,d5
  767.     cmpi.l    #1,d5
  768.     bge    @f            *テンポなので1以下は1
  769.     moveq.l    #1,d5
  770. @@:
  771.     tas.b    (a4)+
  772.     addq.w    #1,a4
  773.     beq    @f
  774.     cmp.w    (a4),d0
  775.     bne    @f
  776.     addq.w    #2,a4
  777.     bra    disp_tempo
  778. @@:
  779.     move.w    d0,(a4)+
  780.     bsr    num_to_str
  781.     draw    7,3
  782.     lea    suji+4(pc),a2
  783.     move.b    d0,(a2)            *1文字目
  784.     moveq    #palet30,d1
  785.     bsr    cgwr
  786. disp_tempo:                *テンポの表示
  787.     move.l    d5,d0
  788.     tas.b    (a4)+
  789.     addq.w    #1,a4
  790.     beq    @f
  791.     cmp.w    (a4),d0
  792.     bne    @f
  793.     addq.w    #2,a4
  794.     bra    disp_agkwf
  795. @@:
  796.     move.w    d0,(a4)+
  797.     bsr    num_to_str
  798.     draw    33,2
  799.     lea    suji+4(pc),a2
  800.     moveq    #palet30,d1
  801.     bsr    cgwr
  802. disp_agkwf:                *波形タイプ表示
  803.     moveq.l    #0,d0
  804.     move.b    p_pmod_sw(a5),d2
  805.     beq    @f
  806.     btst.b    #b_pmod_first,p_pmod_flg(a5)    *!3/26
  807.     beq    @f                *!3/26
  808.     move.w    p_pmod_wf(a5),d0
  809. @@:
  810.     tas.b    (a4)+
  811.     addq.w    #1,a4
  812.     beq    @f
  813.     cmp.w    (a4),d0
  814.     bne    @f
  815.     addq.w    #2,a4
  816.     bra    disp_agkvrnt
  817. @@:
  818.     move.w    d0,(a4)+
  819.     bpl    agkprstwf        *プリセット波形
  820.     andi.w    #$7fff,d0
  821.     addq.l    #8,d0            *USER波形は8番から始まるから
  822.     bsr    num_to_str
  823.     lea    suji+5(pc),a2
  824.     bra    @f
  825. agkprstwf:
  826.     lea    DUMMY_wf(pc),a2        *スイッチオフの時の波形名
  827.     tst.b    d2
  828.     beq    @f
  829.     lea    WAVE_tbl(pc),a2
  830.     lsl.w    #3,d0
  831.     add.w    d0,a2
  832. @@:
  833.     draw    19,3
  834.     moveq    #palet30,d1
  835.     bsr    cgwr
  836. disp_agkvrnt:                *増減値表示
  837.     moveq.l    #0,d0
  838.     tst.b    p_pmod_sw(a5)
  839.     beq    @f
  840.     btst.b    #b_pmod_first,p_pmod_flg(a5)    *!3/26
  841.     beq    @f                *!3/26
  842.     btst.b    #b_pmod_dpn,p_pmod_flg(a5)
  843.     beq    @f
  844.     move.w    p_pmod_dpndpt(a5),d0
  845.     ext.l    d0
  846. @@:
  847.     tas.b    (a4)+
  848.     addq.w    #1,a4
  849.     beq    @f
  850.     cmp.w    (a4),d0
  851.     bne    @f
  852.     addq.w    #2,a4
  853.     bra    disp_repeat
  854. @@:
  855.     move.w    d0,(a4)+
  856.     bsr    num_to_str
  857.     draw    33,3
  858.     lea    suji+4(pc),a2
  859.     move.b    d0,(a2)
  860.     moveq    #palet30,d1
  861.     bsr    cgwr
  862. disp_repeat:                *繰り返し回数の表示
  863.     moveq.l    #-1,d1            *ask
  864.     Z_MUSIC    #ZM_LOOP_CONTROL
  865.     cmp.l    #-1,d0
  866.     bne    @f
  867.     moveq.l    #0,d0            *error case
  868. @@:
  869.     tas.b    (a4)+
  870.     addq.w    #1,a4
  871.     beq    @f
  872.     cmp.w    (a4),d0
  873.     bne    @f
  874.     addq.w    #2,a4
  875.     bra    disp_bar
  876. @@:
  877.     move.w    d0,(a4)+
  878.     bsr    num_to_str
  879.     draw    49,3
  880.     lea    suji+5(pc),a2
  881.     moveq    #palet30,d1
  882.     bsr    cgwr
  883. disp_bar:                *進行バーの表示
  884.     move.l    (sp)+,d2
  885.     bne    @f
  886.     moveq.l    #1,d2            *0のままだと「0で除算しました」が出るから
  887. @@:
  888.     move.l    _zmusic_stat(pc),a5
  889.     move.l    zmusic_int(a5),d0
  890.     cmp.l    d2,d0            *1度演奏終了している
  891.     bls    @f
  892.     move.l    d2,d0
  893. @@:
  894.     move.l    #41*8,d1
  895.     bsr    kake        *>d1=d0*d1
  896.     bsr    wari        *>d1=d1/d2
  897.     tas.b    (a4)+
  898.     addq.w    #1,a4
  899.     beq    @f
  900.     cmp.l    (a4),d1
  901.     bne    @f
  902.     addq.w    #4,a4
  903.     bra    disp_mstrfdr
  904. @@:
  905.     move.l    (a4),d3        *src
  906.     cmp.l    d3,d1
  907.     bcc    @f
  908.     bsr    clear_box
  909.     moveq.l    #0,d3
  910. @@:
  911.     move.l    d3,d1
  912.     addq.l    #1,d3
  913.     move.l    d3,(a4)+    *dest
  914.     bsr    draw_edge
  915. disp_mstrfdr:            *MASTER FADER
  916.     lea    mstfd_fm_spd2(a5),a0
  917.     draw    6,5
  918.     lea    $e00000+9+$80*5*8+$80*7,a3    *x=9,y=5
  919.     moveq.l    #if_max+2-1,d2
  920. mstfdrlp:                *(here will be patched)
  921.     bsr.w    set_mstrfdr_ofs
  922.     moveq.l    #if_max+2-1,d3
  923.     sub.l    d2,d3
  924.     cmp.w    #2,d3            *FM,ADPCMの場合は直値
  925.     bcs    @f
  926.     subq.w    #2,d3
  927.     lea    midi_if_tbl(a5),a2
  928.     move.b    (a2,d3.w),d3        *d3=(0,2,4,6,-1)
  929.     andi.w    #$7f,d3            *実は未使用IFも$80+(0,2,4,6)として格納されている
  930.     addq.w    #4,d3
  931.     lsl.w    #2,d3            *x4
  932.     bra    1f
  933. @@:
  934.     lsl.w    #3,d3            *x8
  935. 1:
  936.     move.l    #128,d0
  937.     tst.b    fader_flag(a5)        *Check FADER FLAG
  938.     bpl    check_mstfdlvl        *動いていなかった
  939.     lea    master_fader_tbl(a5),a2
  940. @@:
  941.     move.w    (a2)+,d1    *実際にFADERが動いているか
  942.     bmi    check_mstfdlvl
  943.     cmp.w    d3,d1
  944.     bne    @b
  945.     moveq.l    #0,d0
  946.     move.b    fd_lvlb(a0,d3.w),d0
  947.     cmpi.b    #128,d0        *129以上は128へ
  948.     bls    check_mstfdlvl
  949.     move.b    #128,d0
  950. check_mstfdlvl:
  951.     tas.b    (a4)+
  952.     beq    @f
  953.     cmp.b    (a4),d0
  954.     bne    @f
  955.     addq.w    #1,a4
  956.     bra    next_mstfdr
  957. @@:
  958.     moveq.l    #0,d1
  959.     move.b    (a4),d1        *前回の位置
  960.     bsr    draw_mixbar    *<a3.l=addr,d1=previous,d0=now
  961.     move.b    d0,(a4)+
  962.     bsr    num_to_str
  963.     lea    suji+7(pc),a2
  964.     moveq    #palet30,d1
  965.     bsr    cgwr
  966. next_mstfdr:
  967.     add.w    #11,a1
  968.     add.w    #11,a3
  969.     dbra    d2,mstfdrlp
  970. ***********************************************************************************************
  971.     tst.w    scr_x-zsv_work(a6)
  972.     beq    disp_trkprms
  973.     move.l    _zmusic_stat(pc),a5
  974.     lea    _opm(a5),a5
  975.     lea    opm_data(pc),a4
  976.     move.l    #$e00000+96+$80*8*2,base_tadr-zsv_work(a6)
  977. dispopm_clka:
  978.     move.b    $11(a5),d1
  979.     andi.w    #3,d1
  980.     moveq.l    #0,d0
  981.     move.b    $10(a5),d0
  982.     lsl.w    #2,d0
  983.     or.b    d1,d0
  984.     tas.b    (a4)+
  985.     addq.w    #1,a4
  986.     beq    @f
  987.     cmp.w    (a4),d0
  988.     bne    @f
  989.     addq.w    #2,a4
  990.     bra    dispopm_clkb
  991. @@:
  992.     move.w    d0,(a4)+
  993.     bsr    num_to_str
  994.     lea    suji+6(pc),a2
  995.     moveq.l    #palet30,d1
  996.     move.l    base_tadr(pc),a1
  997.     addq.w    #7,a1
  998.     bsr    cgwr
  999. dispopm_clkb:
  1000.     moveq.l    #0,d0
  1001.     move.b    $12(a5),d0
  1002.     tas.b    (a4)+
  1003.     beq    @f
  1004.     cmp.b    (a4),d0
  1005.     bne    @f
  1006.     addq.w    #1,a4
  1007.     bra    dispopm_r14
  1008. @@:
  1009.     move.b    d0,(a4)+
  1010.     bsr    num_to_str
  1011.     lea    suji+7(pc),a2
  1012.     moveq.l    #palet30,d1
  1013.     move.l    base_tadr(pc),a1
  1014.     add.w    #18,a1
  1015.     bsr    cgwr
  1016. dispopm_r14:
  1017.     move.b    $14(a5),d0
  1018.     tas.b    (a4)+
  1019.     beq    @f
  1020.     cmp.b    (a4),d0
  1021.     bne    @f
  1022.     addq.w    #1,a4
  1023.     bra    dispopm_ne
  1024. @@:
  1025.     move.b    d0,(a4)+
  1026.     lea    suji(pc),a2
  1027.     moveq.l    #palet30,d1
  1028.     move.l    base_tadr(pc),a1
  1029.     add.w    #26,a1
  1030.     lsl.b    #2,d0
  1031.     moveq.l    #6-1,d2
  1032. 1:
  1033.     move.w    #'0'*256,(a2)
  1034.     tst.b    d0
  1035.     bpl    @f
  1036.     move.b    #'1',(a2)
  1037. @@:
  1038.     bsr    cgwr
  1039.     add.b    d0,d0
  1040.     addq.w    #1,a1
  1041.     dbra    d2,1b
  1042. dispopm_ne:
  1043.     add.l    #$80*8,base_tadr-zsv_work(a6)
  1044.     move.b    $0f(a5),d0
  1045.     rol.b    #1,d0
  1046.     andi.w    #1,d0
  1047.     tas.b    (a4)+
  1048.     beq    @f
  1049.     cmp.b    (a4),d0
  1050.     bne    @f
  1051.     addq.w    #1,a4
  1052.     bra    dispopm_nfrq
  1053. @@:
  1054.     move.b    d0,(a4)+
  1055.     bsr    num_to_str
  1056.     lea    suji+9(pc),a2
  1057.     moveq.l    #palet30,d1
  1058.     move.l    base_tadr(pc),a1
  1059.     addq.w    #4,a1
  1060.     bsr    cgwr
  1061. dispopm_nfrq:
  1062.     move.b    $0f(a5),d0
  1063.     andi.w    #63,d0
  1064.     tas.b    (a4)+
  1065.     beq    @f
  1066.     cmp.b    (a4),d0
  1067.     bne    @f
  1068.     addq.w    #1,a4
  1069.     bra    dispopm_wf
  1070. @@:
  1071.     move.b    d0,(a4)+
  1072.     bsr    num_to_str
  1073.     lea    suji+8(pc),a2
  1074.     moveq.l    #palet30,d1
  1075.     move.l    base_tadr(pc),a1
  1076.     add.w    #11,a1
  1077.     bsr    cgwr
  1078. dispopm_wf:
  1079.     add.l    #$80*8,base_tadr-zsv_work(a6)
  1080.     move.b    $1b(a5),d0
  1081.     andi.w    #3,d0
  1082.     tas.b    (a4)+
  1083.     beq    @f
  1084.     cmp.b    (a4),d0
  1085.     bne    @f
  1086.     addq.w    #1,a4
  1087.     bra    dispopm_lfrq
  1088. @@:
  1089.     move.b    d0,(a4)+
  1090.     bsr    num_to_str
  1091.     lea    suji+9(pc),a2
  1092.     moveq.l    #palet30,d1
  1093.     move.l    base_tadr(pc),a1
  1094.     addq.w    #4,a1
  1095.     bsr    cgwr
  1096. dispopm_lfrq:
  1097.     move.b    $18(a5),d0
  1098.     tas.b    (a4)+
  1099.     beq    @f
  1100.     cmp.b    (a4),d0
  1101.     bne    @f
  1102.     addq.w    #1,a4
  1103.     bra    dispopm_pmd
  1104. @@:
  1105.     move.b    d0,(a4)+
  1106.     bsr    num_to_str
  1107.     lea    suji+7(pc),a2
  1108.     moveq.l    #palet30,d1
  1109.     move.l    base_tadr(pc),a1
  1110.     add.w    #11,a1
  1111.     bsr    cgwr
  1112. dispopm_pmd:
  1113.     move.b    opm_pmd-_opm(a5),d0
  1114.     andi.w    #127,d0
  1115.     tas.b    (a4)+
  1116.     beq    @f
  1117.     cmp.b    (a4),d0
  1118.     bne    @f
  1119.     addq.w    #1,a4
  1120.     bra    dispopm_amd
  1121. @@:
  1122.     move.b    d0,(a4)+
  1123.     bsr    num_to_str
  1124.     lea    suji+7(pc),a2
  1125.     moveq.l    #palet30,d1
  1126.     move.l    base_tadr(pc),a1
  1127.     add.w    #19,a1
  1128.     bsr    cgwr
  1129. dispopm_amd:
  1130.     move.b    $19(a5),d0
  1131.     andi.w    #127,d0
  1132.     tas.b    (a4)+
  1133.     beq    @f
  1134.     cmp.b    (a4),d0
  1135.     bne    @f
  1136.     addq.w    #1,a4
  1137.     bra    dispopm_chprms
  1138. @@:
  1139.     move.b    d0,(a4)+
  1140.     bsr    num_to_str
  1141.     lea    suji+7(pc),a2
  1142.     moveq.l    #palet30,d1
  1143.     move.l    base_tadr(pc),a1
  1144.     add.w    #27,a1
  1145.     bsr    cgwr
  1146. dispopm_chprms:
  1147.     moveq.l    #0,d4
  1148.     moveq.l    #8-1,d7
  1149.     add.l    #$80*8*2,base_tadr-zsv_work(a6)
  1150. dispopmlp:
  1151.     move.w    #palet20,palet_tbl-zsv_work(a6)    *偶数トラック色
  1152.     btst.l    #0,d7
  1153.     bne    @f
  1154.     move.w    #palet30,palet_tbl-zsv_work(a6)    *奇数トラック色
  1155. @@:                    *これから表示しようとしているトラックは
  1156.     move.b    $20(a5,d4.w),d0
  1157.     tas.b    (a4)+
  1158.     beq    @f
  1159.     andi.w    #7,d0        *AL
  1160.     cmp.b    (a4),d0
  1161.     bne    @f
  1162.     addq.w    #1,a4
  1163.     bra    dispopm_fb
  1164. @@:
  1165.     move.b    d0,(a4)+
  1166.     bsr    num_to_str2
  1167.     lea    suji+9(pc),a2
  1168.     move.w    palet_tbl(pc),d1
  1169.     move.l    base_tadr(pc),a1
  1170.     addq.w    #8,a1
  1171.     bsr    cgwr
  1172. dispopm_fb:
  1173.     move.b    $20(a5,d4.w),d0
  1174.     tas.b    (a4)+
  1175.     beq    @f
  1176.     lsr.w    #3,d0
  1177.     andi.w    #7,d0        *FB
  1178.     cmp.b    (a4),d0
  1179.     bne    @f
  1180.     addq.w    #1,a4
  1181.     bra    dispopm_pms
  1182. @@:
  1183.     move.b    d0,(a4)+
  1184.     bsr    num_to_str2
  1185.     lea    suji+9(pc),a2
  1186.     move.w    palet_tbl(pc),d1
  1187.     move.l    base_tadr(pc),a1
  1188.     add.w    #13,a1
  1189.     bsr    cgwr
  1190. dispopm_pms:
  1191.     move.b    $38(a5,d4.w),d0
  1192.     tas.b    (a4)+
  1193.     beq    @f
  1194.     lsr.w    #4,d0
  1195.     andi.w    #7,d0        *PMS
  1196.     cmp.b    (a4),d0
  1197.     bne    @f
  1198.     addq.w    #1,a4
  1199.     bra    dispopm_ams
  1200. @@:
  1201.     move.b    d0,(a4)+
  1202.     bsr    num_to_str2
  1203.     lea    suji+9(pc),a2
  1204.     move.w    palet_tbl(pc),d1
  1205.     move.l    base_tadr(pc),a1
  1206.     add.w    #19,a1
  1207.     bsr    cgwr
  1208. dispopm_ams:
  1209.     move.b    $38(a5,d4.w),d0
  1210.     tas.b    (a4)+
  1211.     beq    @f
  1212.     andi.w    #3,d0        *AMS
  1213.     cmp.b    (a4),d0
  1214.     bne    @f
  1215.     addq.w    #1,a4
  1216.     bra    dispopm_pan
  1217. @@:
  1218.     move.b    d0,(a4)+
  1219.     bsr    num_to_str2
  1220.     lea    suji+9(pc),a2
  1221.     move.w    palet_tbl(pc),d1
  1222.     move.l    base_tadr(pc),a1
  1223.     add.w    #25,a1
  1224.     bsr    cgwr
  1225. dispopm_pan:
  1226.     move.b    $20(a5,d4.w),d0
  1227.     tas.b    (a4)+
  1228.     beq    @f
  1229.     rol.b    #2,d0
  1230.     andi.w    #3,d0        *PAN
  1231.     cmp.b    (a4),d0
  1232.     bne    @f
  1233.     addq.w    #1,a4
  1234.     bra    dispopm_ops
  1235. @@:
  1236.     move.b    d0,(a4)+
  1237.     bsr    num_to_str2
  1238.     lea    suji+9(pc),a2
  1239.     move.w    palet_tbl(pc),d1
  1240.     move.l    base_tadr(pc),a1
  1241.     add.w    #31,a1
  1242.     bsr    cgwr
  1243. dispopm_ops:
  1244.     add.l    #$80*8*2,base_tadr-zsv_work(a6)
  1245.     moveq.l    #4-1,d6        *オペレータ数
  1246.     lea    op_ofs(pc),a0
  1247. dispopmopslp:
  1248.     move.l    d4,d5
  1249.     add.w    #$80,d5        *KS/AR
  1250.     add.w    (a0),d5
  1251.     move.b    (a5,d5.w),d0
  1252.     tas.b    (a4)+
  1253.     beq    @f
  1254.     andi.w    #31,d0
  1255.     cmp.b    (a4),d0
  1256.     bne    @f
  1257.     addq.w    #1,a4
  1258.     bra    dispopm_dr
  1259. @@:
  1260.     move.b    d0,(a4)+
  1261.     bsr    num_to_str2
  1262.     lea    suji+8(pc),a2
  1263.     move.w    palet_tbl(pc),d1
  1264.     move.l    base_tadr(pc),a1
  1265.     addq.w    #1,a1
  1266.     bsr    cgwr
  1267. dispopm_dr:
  1268.     move.l    d4,d5
  1269.     add.w    #$a0,d5        *AMS-EN DR(1DR)
  1270.     add.w    (a0),d5
  1271.     move.b    (a5,d5.w),d0
  1272.     tas.b    (a4)+
  1273.     beq    @f
  1274.     andi.w    #31,d0
  1275.     cmp.b    (a4),d0
  1276.     bne    @f
  1277.     addq.w    #1,a4
  1278.     bra    dispopm_sr
  1279. @@:
  1280.     move.b    d0,(a4)+
  1281.     bsr    num_to_str2
  1282.     lea    suji+8(pc),a2
  1283.     move.w    palet_tbl(pc),d1
  1284.     move.l    base_tadr(pc),a1
  1285.     addq.w    #4,a1
  1286.     bsr    cgwr
  1287. dispopm_sr:
  1288.     move.l    d4,d5
  1289.     add.w    #$c0,d5        *DT2 SR(2DR)
  1290.     add.w    (a0),d5
  1291.     move.b    (a5,d5.w),d0
  1292.     tas.b    (a4)+
  1293.     beq    @f
  1294.     andi.w    #31,d0
  1295.     cmp.b    (a4),d0
  1296.     bne    @f
  1297.     addq.w    #1,a4
  1298.     bra    dispopm_rr
  1299. @@:
  1300.     move.b    d0,(a4)+
  1301.     bsr    num_to_str2
  1302.     lea    suji+8(pc),a2
  1303.     move.w    palet_tbl(pc),d1
  1304.     move.l    base_tadr(pc),a1
  1305.     addq.w    #7,a1
  1306.     bsr    cgwr
  1307. dispopm_rr:
  1308.     move.l    d4,d5
  1309.     add.w    #$e0,d5        *SL(1DL) RR
  1310.     add.w    (a0),d5
  1311.     move.b    (a5,d5.w),d0
  1312.     tas.b    (a4)+
  1313.     beq    @f
  1314.     andi.w    #15,d0
  1315.     cmp.b    (a4),d0
  1316.     bne    @f
  1317.     addq.w    #1,a4
  1318.     bra    dispopm_sl
  1319. @@:
  1320.     move.b    d0,(a4)+
  1321.     bsr    num_to_str2
  1322.     lea    suji+8(pc),a2
  1323.     move.w    palet_tbl(pc),d1
  1324.     move.l    base_tadr(pc),a1
  1325.     add.w    #10,a1
  1326.     bsr    cgwr
  1327. dispopm_sl:
  1328.     move.l    d4,d5
  1329.     add.w    #$e0,d5        *SL(1DL) RR
  1330.     add.w    (a0),d5
  1331.     move.b    (a5,d5.w),d0
  1332.     tas.b    (a4)+
  1333.     beq    @f
  1334.     lsr.b    #4,d0
  1335.     andi.w    #15,d0
  1336.     cmp.b    (a4),d0
  1337.     bne    @f
  1338.     addq.w    #1,a4
  1339.     bra    dispopm_tlv
  1340. @@:
  1341.     move.b    d0,(a4)+
  1342.     bsr    num_to_str2
  1343.     lea    suji+8(pc),a2
  1344.     move.w    palet_tbl(pc),d1
  1345.     move.l    base_tadr(pc),a1
  1346.     add.w    #13,a1
  1347.     bsr    cgwr
  1348. dispopm_tlv:
  1349.     move.l    d4,d5
  1350.     add.w    #$60,d5        *TL
  1351.     add.w    (a0),d5
  1352.     move.b    (a5,d5.w),d0
  1353.     tas.b    (a4)+
  1354.     beq    @f
  1355.     andi.w    #127,d0
  1356.     cmp.b    (a4),d0
  1357.     bne    @f
  1358.     addq.w    #1,a4
  1359.     bra    dispopm_ks
  1360. @@:
  1361.     move.b    d0,(a4)+
  1362.     bsr    num_to_str2
  1363.     lea    suji+7(pc),a2
  1364.     move.w    palet_tbl(pc),d1
  1365.     move.l    base_tadr(pc),a1
  1366.     add.w    #16,a1
  1367.     bsr    cgwr
  1368. dispopm_ks:
  1369.     move.l    d4,d5
  1370.     add.w    #$80,d5        *KS
  1371.     add.w    (a0),d5
  1372.     move.b    (a5,d5.w),d0
  1373.     tas.b    (a4)+
  1374.     beq    @f
  1375.     rol.b    #2,d0
  1376.     andi.w    #3,d0
  1377.     cmp.b    (a4),d0
  1378.     bne    @f
  1379.     addq.w    #1,a4
  1380.     bra    dispopm_ml
  1381. @@:
  1382.     move.b    d0,(a4)+
  1383.     bsr    num_to_str2
  1384.     lea    suji+9(pc),a2
  1385.     move.w    palet_tbl(pc),d1
  1386.     move.l    base_tadr(pc),a1
  1387.     add.w    #20,a1
  1388.     bsr    cgwr
  1389. dispopm_ml:
  1390.     move.l    d4,d5
  1391.     add.w    #$40,d5        *DT1 ML
  1392.     add.w    (a0),d5
  1393.     move.b    (a5,d5.w),d0
  1394.     tas.b    (a4)+
  1395.     beq    @f
  1396.     andi.w    #15,d0
  1397.     cmp.b    (a4),d0
  1398.     bne    @f
  1399.     addq.w    #1,a4
  1400.     bra    dispopm_dt1
  1401. @@:
  1402.     move.b    d0,(a4)+
  1403.     bsr    num_to_str2
  1404.     lea    suji+8(pc),a2
  1405.     move.w    palet_tbl(pc),d1
  1406.     move.l    base_tadr(pc),a1
  1407.     add.w    #22,a1
  1408.     bsr    cgwr
  1409. dispopm_dt1:
  1410.     move.l    d4,d5
  1411.     add.w    #$40,d5        *DT1 ML
  1412.     add.w    (a0),d5
  1413.     move.b    (a5,d5.w),d0
  1414.     tas.b    (a4)+
  1415.     beq    @f
  1416.     lsr.b    #4,d0
  1417.     andi.w    #7,d0
  1418.     cmp.b    (a4),d0
  1419.     bne    @f
  1420.     addq.w    #1,a4
  1421.     bra    dispopm_dt2
  1422. @@:
  1423.     move.b    d0,(a4)+
  1424.     bsr    num_to_str2
  1425.     lea    suji+9(pc),a2
  1426.     move.w    palet_tbl(pc),d1
  1427.     move.l    base_tadr(pc),a1
  1428.     add.w    #26,a1
  1429.     bsr    cgwr
  1430. dispopm_dt2:
  1431.     move.l    d4,d5
  1432.     add.w    #$c0,d5        *DT2 SR(2DR)
  1433.     add.w    (a0),d5
  1434.     move.b    (a5,d5.w),d0
  1435.     tas.b    (a4)+
  1436.     beq    @f
  1437.     rol.b    #2,d0
  1438.     andi.w    #3,d0
  1439.     cmp.b    (a4),d0
  1440.     bne    @f
  1441.     addq.w    #1,a4
  1442.     bra    dispopm_ame
  1443. @@:
  1444.     move.b    d0,(a4)+
  1445.     bsr    num_to_str2
  1446.     lea    suji+9(pc),a2
  1447.     move.w    palet_tbl(pc),d1
  1448.     move.l    base_tadr(pc),a1
  1449.     add.w    #29,a1
  1450.     bsr    cgwr
  1451. dispopm_ame:
  1452.     move.l    d4,d5
  1453.     add.w    #$a0,d5        *AMS-EN DR(1DR)
  1454.     add.w    (a0),d5
  1455.     move.b    (a5,d5.w),d0
  1456.     tas.b    (a4)+
  1457.     beq    @f
  1458.     rol.b    #1,d0
  1459.     andi.w    #1,d0
  1460.     cmp.b    (a4),d0
  1461.     bne    @f
  1462.     addq.w    #1,a4
  1463.     bra    next_dispopm
  1464. @@:
  1465.     move.b    d0,(a4)+
  1466.     bsr    num_to_str2
  1467.     lea    suji+9(pc),a2
  1468.     move.w    palet_tbl(pc),d1
  1469.     move.l    base_tadr(pc),a1
  1470.     add.w    #31,a1
  1471.     bsr    cgwr
  1472. next_dispopm:
  1473.     add.l    #$80*8,base_tadr-zsv_work(a6)
  1474.     addq.w    #2,a0
  1475.     dbra    d6,dispopmopslp
  1476.     addq.w    #1,d4
  1477.     dbra    d7,dispopmlp
  1478. ***********************************************************************************************
  1479. disp_trkprms:                *トラックパラメータ表示セクション
  1480.     moveq.l    #0,d7
  1481.     move.w    disp_start(pc),d7    *表示開始トラック(この値から10トラック分の表示となる)
  1482.     moveq.l    #10-1,d6        *loop counter
  1483.     lea    track_data(pc),a4
  1484.     move.l    #$e00000+0+$80*6*8,base_tadr-zsv_work(a6)    *表示アドレス0,6
  1485. dstp_lp00:
  1486.     pea    dtsz(a4)
  1487.     movea.l    _play_trk_tbl(pc),a0
  1488.     move.l    #palet30*65536+palet30,palet_tbl-zsv_work(a6)    *偶数トラック色
  1489.     move.w    #palet40,palet_tbl+4-zsv_work(a6)        *KON
  1490.     move.l    #$4_0000,plane-zsv_work(a6)            *鍵盤書き込みプレーンオフセット
  1491.     btst.l    #0,d7
  1492.     bne    @f
  1493.     move.l    #palet20*65536+palet20,palet_tbl-zsv_work(a6)    *奇数トラック色
  1494. @@:                    *これから表示しようとしているトラックは
  1495.     move.w    (a0)+,d0        *演奏されているのかチェック
  1496.     cmpi.w    #-1,d0
  1497.     beq    no_disp_case        *なし
  1498.     cmp.w    d0,d7
  1499.     bne    @b
  1500.     lea    no_disp_tbl(pc),a1
  1501.     bclr.b    #7,(a1,d6.w)        *no_disp_caseを実行したことがあるかフラグ初期化
  1502.     beq    @f
  1503.     clr.b    (a4)            *デッド→アクティヴのケースに対応
  1504. @@:
  1505.     move.l    _seq_wk_tbl(pc),a5    *a5=track work addr
  1506.     mulu    _wk_size(pc),d0
  1507.     add.l    d0,a5
  1508.  
  1509.     move.l    p_type(a5),d4
  1510.     move.b    p_mask_mode(a5),d0        *トラックマスクか
  1511.     bne    get_trstat            *MASK
  1512.     move.l    _zmusic_stat(pc),a1        *チャンネルマスクか
  1513.     move.l    d4,d1
  1514.     bmi    gttrst_md
  1515.     swap    d1
  1516.     tst.w    d1
  1517.     bne    gttrst_ad
  1518. gttrst_fm:
  1519.     btst.b    d4,ch_mask_fm+1(a1)        *FMのチャンネルマスク状態チェック
  1520.     sne    d0
  1521.     bra    get_trstat
  1522. gttrst_ad:                    *ADPCMチャンネルマスク状態チェック
  1523.     move.w    ch_mask_ad(a1),d0
  1524.     bra    @f
  1525. gttrst_md:                    *MIDIチャンネルマスク状態チェック
  1526.     swap    d1
  1527.     lea    ch_mask_m0(a1),a1
  1528.     add.w    d1,d1
  1529.     move.w    (a1,d1.w),d0
  1530. @@:
  1531.     btst.l    d4,d0
  1532.     sne    d0
  1533. get_trstat:
  1534.     lsl.w    #8,d0
  1535.     bmi    @f
  1536.     move.b    p_track_stat(a5),d0
  1537.     beq    do_drtrpr
  1538. @@:
  1539.     move.w    #paleta0,palet_tbl+0-zsv_work(a6)    *ノンアクティヴトラックはダーク色
  1540.     move.w    #palet10,palet_tbl+4-zsv_work(a6)    *KON
  1541.     clr.l    plane-zsv_work(a6)            *鍵盤書き込みプレーンオフセット
  1542. do_drtrpr:                *track statの変化吟味
  1543.     tas.b    (a4)+
  1544.     addq.w    #1,a4
  1545.     beq    draw_trkttl
  1546.     cmp.w    (a4),d0            *ステータスに変更が見られた
  1547.     bne    @f
  1548.     addq.w    #2,a4
  1549.     bra    get_trkdev
  1550. @@:                    *コピーする
  1551.     move.w    d0,(a4)
  1552.     beq    @f
  1553.     bsr    copy_plane2        *アクティヴ→ノンアクティヴ
  1554.     bra    get_trkmode
  1555. @@:
  1556.     bsr    copy_plane1        *ノンアクティヴ→アクティヴ
  1557.     bra    get_trkmode
  1558. draw_trkttl:                *初めての表示の時はパラメタタイトルを描画
  1559.     move.w    d0,(a4)
  1560.     bsr    do_draw_trkprms
  1561. get_trkmode:                *モード
  1562.     bsr    clr_track_data
  1563.  
  1564.     move.l    base_tadr(pc),a1
  1565.     add.w    #46+$80*8*2,a1            *トリムを消す
  1566.     moveq.l    #palet70,d1
  1567.     lea    trim_vanish(pc),a2
  1568.     bsr    cgwr
  1569.     add.w    #$80*8,a1
  1570.     bsr    cgwr
  1571.     addq.w    #1,a2
  1572.     add.w    #$80*8,a1
  1573.     bsr    cgwr
  1574.     add.w    #$80*8,a1
  1575.     bsr    cgwr
  1576.     add.w    #48-$80*8*3,a1
  1577.     bsr    cgwr
  1578.     addq.w    #1,a2
  1579.     add.w    #$80*8+1,a1
  1580.     bsr    cgwr
  1581.  
  1582.     move.l    base_tadr(pc),a1
  1583.     add.w    #23,a1
  1584.     moveq.l    #paletf0,d1
  1585.     lea    trkmd_Vanish(pc),a2
  1586.     bsr    cgwr
  1587.     lea    trkmd_NORMAL(pc),a2
  1588.     move.w    palet_tbl(pc),d1
  1589.     or.w    palet_tbl+4(pc),d1
  1590.     move.w    (a4)+,d0
  1591.     beq    @f
  1592. *    move.w    palet_tbl(pc),d1
  1593.     moveq.l    #paletf0,d1        *flash palet
  1594.     lea    trkmd_PTRN(pc),a2
  1595.     cmpi.b    #ID_PATTERN,d0        *PATTERN
  1596.     beq    @f
  1597.     lea    trkmd_DEAD(pc),a2
  1598.     tst.b    d0
  1599.     bmi    @f            *DEAD
  1600.     lea    trkmd_END(pc),a2
  1601.     btst.l    #_ID_END,d0
  1602.     bne    @f            *END
  1603.     lea    trkmd_MASK(pc),a2
  1604.     tst.w    d0
  1605.     bmi    @f            *MASK
  1606.     lea    trkmd_STOP(pc),a2
  1607.     btst.l    #_ID_PLAY_STOP,d0
  1608.     bne    @f            *STOP
  1609.     lea    trkmd_SYNC(pc),a2
  1610.     btst.l    #_ID_SYNC,d0
  1611.     bne    @f            *SYNC
  1612.     lea    trkmd_REC(pc),a2
  1613.     btst.l    #_ID_REC,d0
  1614.     bne    @f            *REC
  1615.     lea    trkmd_SE(pc),a2
  1616. @@:
  1617.     bsr    cgwr
  1618. get_trkdev:                *デバイス
  1619.     tas.b    (a4)+
  1620.     addq.w    #1,a4
  1621.     beq    @f
  1622.     cmp.l    (a4),d4
  1623.     bne    @f
  1624.     addq.w    #4,a4
  1625.     bra    disp_chfdr
  1626. @@:
  1627.     moveq.l    #paletf0,d1
  1628.     lea    ch_vanish(pc),a2
  1629.     move.l    base_tadr(pc),a1
  1630.     addq.w    #6,a1
  1631.     bsr    cgwr            *消す
  1632.     move.l    d4,d0
  1633.     move.l    d4,d1
  1634.     move.l    d0,(a4)+
  1635.     bmi    gtrkdv_md
  1636.     swap    d0
  1637.     cmpi.w    #DEV_PATTERN,d0
  1638.     beq    disp_chfdr
  1639.     tst.w    d0            *ADPCM?
  1640.     bne    gtrkdv_ad
  1641.     lea    ch_fm(pc),a2        *FM
  1642.     add.b    #'1',d1
  1643.     move.b    d1,5(a2)
  1644.     moveq.l    #palet90,d1
  1645.     bsr    cgwr
  1646.     bra    disp_chfdr
  1647. gtrkdv_ad:
  1648.     lea    ch_ad(pc),a2        *ADPCM
  1649.     move.b    #'0',5(a2)
  1650.     addq.b    #1,d1
  1651.     cmp.w    #9,d1
  1652.     bls    @f
  1653.     sub.w    #10,d1
  1654.     move.b    #'1',5(a2)
  1655. @@:
  1656.     add.b    #'0',d1
  1657.     move.b    d1,6(a2)
  1658.     moveq.l    #paletc0,d1
  1659.     bsr    cgwr
  1660.     bra    disp_chfdr
  1661. gtrkdv_md:
  1662.     lea    ch_md(pc),a2        *MIDI
  1663.     move.w    p_midi_if(a5),d0    *swap    d0
  1664.     add.b    #'1',d0
  1665.     move.b    d0,5(a2)        *dev
  1666.     move.b    #'0',7(a2)
  1667.     addq.b    #1,d1
  1668.     cmp.w    #9,d1
  1669.     bls    @f
  1670.     move.b    #'1',7(a2)
  1671.     sub.b    #10,d1
  1672. @@:
  1673.     add.b    #'0',d1
  1674.     move.b    d1,8(a2)
  1675.     moveq.l    #palete0,d1
  1676.     bsr    cgwr
  1677. disp_chfdr:
  1678.     move.l    _zmusic_stat(pc),a2
  1679.     lea    ch_fm_fdp(a2),a0
  1680.     bsr    ch_odr_no        *>d3.w=ID
  1681.     move.l    #128,d0
  1682.     btst.b    #6,fader_flag(a2)        *Check CH FADER FLAG
  1683.     beq    check_chfdlvl
  1684.     lea    ch_fader_tbl(a2),a2
  1685. @@:
  1686.     move.w    (a2)+,d1    *実際にFADERが動いているか
  1687.     bmi    check_chfdlvl    *動いていなかった
  1688.     cmp.w    d3,d1
  1689.     bne    @b
  1690.     moveq.l    #0,d0
  1691.     lsl.w    #fd_wkl_,d3
  1692.     move.b    fd_lvlb(a0,d3.w),d0
  1693.     cmpi.b    #128,d0        *129以上は128へ
  1694.     bls    check_chfdlvl
  1695.     move.b    #128,d0
  1696. check_chfdlvl:
  1697.     tas.b    (a4)+
  1698.     beq    @f
  1699.     cmp.b    (a4),d0
  1700.     bne    @f
  1701.     addq.w    #1,a4
  1702.     bra    get_trkwkadr
  1703. @@:
  1704.     moveq.l    #0,d1
  1705.     move.b    (a4),d1        *前回の位置
  1706.     move.l    base_tadr(pc),a1
  1707.     lea    95+$80*3*8+$80*7(a1),a3    *x=95,y=3
  1708.     bsr    draw_mixbar    *<a3.l=addr,d1=previous,d0=now
  1709.     move.b    d0,(a4)+
  1710.     bsr    num_to_str
  1711.     lea    suji+7(pc),a2
  1712.     move.w    palet_tbl(pc),d1
  1713.     add.w    #93,a1
  1714.     bsr    cgwr
  1715. get_trkwkadr:                *(Here will be patched)
  1716.     move.l    a4,trkwkadr_adr-zsv_work(a6)
  1717. *    move.b    p_velo(a5),velo_buf+1-zsv_work(a6)
  1718.     move.b    -1(a4),chfdr_buf+1-zsv_work(a6)    *CH FADERの値をコピー(disp_attackで使用)
  1719.     move.l    p_now_pointer(a5),d0
  1720.     move.l    d0,a0
  1721.     tas.b    (a4)+
  1722.     addq.w    #1,a4
  1723.     beq    @f
  1724.     cmp.l    (a4),d0
  1725.     bne    @f
  1726.     addq.w    #8,a4            *ポインタ.lのあとにZMD.w,VELOCITY.w
  1727.     bra    disp_attack
  1728. @@:
  1729.     move.l    d0,(a4)+
  1730.     bsr    get_hex32
  1731.     move.l    base_tadr(pc),a1
  1732.     add.w    #31,a1
  1733.     lea    suji(pc),a2
  1734.     move.w    palet_tbl(pc),d1
  1735.     bsr    cgwr
  1736.                     *ZMD 表示
  1737.     move.w    (a4),d5
  1738.     moveq.l    #0,d0
  1739.     move.b    (a0)+,d0
  1740.     move.w    d0,(a4)+
  1741.     bsr    get_hex
  1742.     move.l    base_tadr(pc),a1
  1743.     add.w    #40,a1
  1744.     lea    suji(pc),a2
  1745.     move.w    palet_tbl(pc),d1
  1746.     bsr    cgwr
  1747.     addq.w    #3,a1
  1748.     tst.b    d0            *NOTEかその他の特殊コマンドか
  1749.     bmi    disp_cmd
  1750.     bsr    make_note        *NOTE文字列作成
  1751.     lea    suji(pc),a2
  1752.     bsr    cgwr
  1753.     movem.l    d0/d5/a4,-(sp)
  1754.     bsr    get_st_gt_vl        *d1=step,d2=gate,d3=velocity
  1755.     movem.l    (sp)+,d0/d5/a4
  1756. *    move.b    d3,velo_buf+1-zsv_work(a6)
  1757.     move.l    d2,-(sp)
  1758.     move.l    d1,d0
  1759.     bsr    num_to_str
  1760.     addq.w    #5,a1
  1761.     move.w    palet_tbl(pc),d1
  1762.     lea    suji+5(pc),a2
  1763.     bsr    cgwr            *step
  1764.     addq.w    #6,a1
  1765.     move.l    (sp)+,d0
  1766.     cmp.l    #TIE_GATE,d0
  1767.     beq    @f
  1768.     bsr    num_to_str
  1769.     lea    suji+5(pc),a2
  1770.     bsr    cgwr            *gate
  1771.     bra    1f
  1772. @@:                    *タイ
  1773.     lea    TIE_str(pc),a2
  1774.     bsr    cgwr
  1775. 1:
  1776.     addq.w    #6,a1
  1777.     moveq.l    #0,d0
  1778. disp_nn_velo:
  1779.     move.b    d3,d0
  1780.     move.w    d0,(a4)+        *VELOCITY.w
  1781.     bsr    num_to_str
  1782.     lea    suji+7(pc),a2
  1783.     bsr    cgwr            *velocity
  1784.     addq.w    #3,a1
  1785.     tst.b    d5            *前がノート系でなければエリア消去する
  1786.     bpl    disp_calm
  1787.     lea    Vanish_cmd(pc),a2
  1788.     bsr    cgwr
  1789. disp_attack:                *アタックレベルグラフ表示
  1790.     moveq.l    #0,d2
  1791.     move.b    (a4),d2            *前のアタックレベル
  1792.     move.b    1(a4),d3        *count
  1793.     cmpi.w    #paleta0,palet_tbl-zsv_work(a6)    *ノンアクティヴならば不要
  1794.     beq    disp_calm
  1795.     bclr.b    #b_keyon,p_onoff_bit(a5)
  1796.     beq    disp_calm
  1797.     tst.b    d2
  1798.     bpl    @f
  1799.     moveq.l    #0,d2
  1800. @@:
  1801.     moveq.l    #0,d1
  1802.     move.b    p_vol(a5),d1
  1803.     mulu    -2(a4),d1        *velo_buf
  1804.     lsr.w    #8,d1
  1805.     lsr.w    #2,d1            *1024
  1806.     mulu    chfdr_buf(pc),d1    *FADER考慮
  1807.     lsr.w    #7,d1
  1808.     move.b    d1,(a4)            *保存
  1809.     move.l    base_tadr(pc),a1
  1810.     lea    95+$80*5*8+$80*7(a1),a3
  1811.     bsr    draw_attack        *<a3.l=address,d1.l=level(now),d2=level(previous)
  1812.     bra    disp_bank
  1813.  
  1814. disp_cmd:                *ノート番号以外のZMD
  1815.     sub.b    #$80,d0
  1816.     cmpi.w    #$05,d0
  1817.     bhi    other_cmd
  1818.     add.w    d0,d0
  1819.     move.w    @f(pc,d0.w),d0
  1820.     jmp    @f(pc,d0.w)
  1821. @@:
  1822.     dc.w    _rest-@b        *$80
  1823.     dc.w    _wait-@b        *$81
  1824.     dc.w    _track_delay-@b        *$82
  1825.     dc.w    _mx_key-@b        *$83
  1826.     dc.w    _portament-@b        *$84
  1827.     dc.w    _portament-@b        *$85
  1828.  
  1829. other_cmd:
  1830.     addq.w    #2,a4            *skip VELOCITY.w
  1831.     lea    Vanish_nn(pc),a2
  1832.     bsr    cgwr
  1833.     bra    disp_calm
  1834.  
  1835. _portament:                *ポルタメント
  1836.     moveq.l    #0,d0
  1837.     move.b    (a0)+,d0
  1838.     move.l    d0,d3
  1839.     andi.l    #$7f,d0
  1840.     bsr    make_note        *NOTE文字列作成
  1841.     lea    suji(pc),a2
  1842.     bsr    cgwr            *note
  1843.     moveq.l    #0,d2
  1844.     move.b    (a0)+,d2        *dest.note
  1845.     tst.b    d3
  1846.     bpl    @f
  1847.     bsr    skip_@v            *skip delay
  1848. @@:
  1849.     tst.b    d2
  1850.     bpl    @f
  1851.     bsr    skip_@v            *skip port.time
  1852. @@:
  1853.     move.l    d2,-(sp)
  1854.     movem.l    d0/d5/a4,-(sp)
  1855.     bsr    get_st_gt_vl        *d1=step,d2=gate,d3=velocity
  1856.     movem.l    (sp)+,d0/d5/a4
  1857. *    move.b    d3,velo_buf+1-zsv_work(a6)
  1858.     move.l    d1,-(sp)
  1859.     move.l    d2,d0
  1860.     bsr    num_to_str
  1861.     addq.w    #5,a1
  1862.     move.w    palet_tbl(pc),d1
  1863.     lea    suji+5(pc),a2
  1864.     bsr    cgwr            *gate
  1865.     move.l    (sp)+,d0
  1866.     bsr    num_to_str
  1867.     addq.w    #6,a1
  1868.     lea    suji+5(pc),a2
  1869.     bsr    cgwr            *step
  1870.     addq.w    #6,a1
  1871.     moveq.l    #0,d0
  1872.     move.b    d3,d0
  1873.     move.w    d0,(a4)+        *VELOCITY.w
  1874.     bsr    num_to_str
  1875.     lea    suji+7(pc),a2
  1876.     bsr    cgwr            *velocity
  1877.     addq.w    #3,a1
  1878.     lea    Portament_nn(pc),a2
  1879.     bsr    cgwr
  1880.     add.w    #14,a1
  1881.     move.l    (sp)+,d0
  1882.     andi.l    #$7f,d0
  1883.     bsr    make_note
  1884.     lea    suji(pc),a2
  1885.     bsr    cgwr            *note
  1886.     bra    disp_attack
  1887.  
  1888. _mx_key:                *MXキー
  1889.     moveq.l    #0,d0
  1890.     move.b    (a0)+,d0
  1891.     move.l    d0,d3
  1892.     andi.l    #$7f,d0
  1893.     bsr    make_note        *NOTE文字列作成
  1894.     lea    suji(pc),a2
  1895.     bsr    cgwr            *note
  1896.     bsr    get_st
  1897.     bsr    calc_gate        *d1.w=step,d2.w=gate
  1898.     move.l    d1,-(sp)
  1899.     move.l    d2,d0
  1900.     bsr    num_to_str
  1901.     addq.w    #5,a1
  1902.     move.w    palet_tbl(pc),d1
  1903.     lea    suji+5(pc),a2
  1904.     bsr    cgwr            *gate
  1905.     move.l    (sp)+,d0
  1906.     bsr    num_to_str
  1907.     addq.w    #6,a1
  1908.     lea    suji+5(pc),a2
  1909.     bsr    cgwr            *step
  1910.     addq.w    #6,a1
  1911.     tst.b    d3
  1912.     bmi    @f
  1913.     lea    dummy_velo(pc),a0    *ダミーベロシティにポイントさせる
  1914.     movem.l    d0/d5/a4,-(sp)
  1915.     bsr    get_def_velo        *>d3.b=velocity
  1916.     movem.l    (sp)+,d0/d5/a4
  1917.     bra    disp_nn_velo
  1918. @@:
  1919.     movem.l    d0/d5/a4,-(sp)
  1920.     bsr    get_def_velo        *>d3.b=velocity
  1921.     movem.l    (sp)+,d0/d5/a4
  1922.     bra    disp_nn_velo
  1923.  
  1924. _track_delay:                *トラックディレイ
  1925. _wait:                    *ウェイト
  1926.     lea    Wait_nn(pc),a2
  1927.     bsr    cgwr
  1928.     bsr    get_st            *d1=step
  1929.     move.l    d1,-(sp)
  1930.     addq.w    #5,a1
  1931.     move.w    palet_tbl(pc),d1
  1932.     lea    Dummy_gate(pc),a2
  1933.     bsr    cgwr            *gate
  1934.     bra    rest00
  1935. _rest:                    *休符
  1936.     lea    Rest_nn(pc),a2
  1937.     bsr    cgwr
  1938.     bsr    get_st_gt        *d1=step,d2=gate
  1939.     move.l    d1,-(sp)
  1940.     move.l    d2,d0
  1941.     bsr    num_to_str
  1942.     addq.w    #5,a1
  1943.     move.w    palet_tbl(pc),d1
  1944.     lea    suji+5(pc),a2
  1945.     bsr    cgwr            *gate
  1946. rest00:
  1947.     move.l    (sp)+,d0
  1948.     bsr    num_to_str
  1949.     addq.w    #6,a1
  1950.     lea    suji+5(pc),a2
  1951.     bsr    cgwr            *step
  1952.     addq.w    #6,a1
  1953.     addq.w    #2,a4            *skip VELOCITY.W
  1954.     lea    Rest_velo(pc),a2
  1955.     bsr    cgwr
  1956.     add.w    #3,a1
  1957.     tst.b    d5            *前がノート系でなければエリア消去する
  1958.     bpl    disp_calm
  1959.     lea    Vanish_cmd(pc),a2
  1960.     bsr    cgwr
  1961. disp_calm:                *グラフ減衰
  1962.     moveq.l    #0,d2
  1963.     move.b    (a4),d2            *前のアタックレベル
  1964.     move.b    1(a4),d3        *count
  1965.     tst.b    d2
  1966.     bmi    disp_bank        *すでにゼロ
  1967.     cmp.b    1(a5),d3
  1968.     beq    disp_bank
  1969.     move.b    1(a5),1(a4)
  1970.     move.l    base_tadr(pc),a3
  1971.     add.w    #95+$80*5*8+$80*7,a3
  1972.     bsr    draw_release        *<a3.l=address,d2.l=level
  1973.     subq.b    #1,d2
  1974.     move.b    d2,(a4)
  1975. disp_bank:            *音色バンク
  1976.     addq.w    #2,a4        *disp_attack,disp_calmのワークをスキップ
  1977. sbo_patch:            *(here will be patched)
  1978.     bsr.w    set_bank_ofs
  1979.     moveq.l    #0,d0
  1980.     move.w    p_bank_msb(a5),d0
  1981.     tas.b    (a4)+
  1982.     addq.w    #1,a4
  1983.     beq    @f
  1984.     cmp.w    (a4),d0
  1985.     bne    @f
  1986.     addq.w    #2,a4
  1987.     bra    disp_timbre
  1988. @@:
  1989.     move.w    d0,(a4)+
  1990.     cmpi.w    #-1,d0
  1991.     beq    disp_timbre
  1992.     move.b    bank_mode(pc),d1
  1993.     bne    @f
  1994.     lsr.w    #8,d0            *上位7ビットのみ表示(mode=0)
  1995.     tst.b    d0            *下位7ビットチェック
  1996.     bmi    disp_timbre
  1997.     bra    2f
  1998. @@:
  1999.     subq.b    #1,d1
  2000.     beq    1f
  2001.                     *mode=2の場合
  2002.     moveq.l    #0,d0            *7bit:7bit-7bit
  2003.     move.b    p_bank_msb(a5),d0
  2004.     bsr    num_to_str
  2005.     lea    suji+7(pc),a2
  2006.     move.b    #':',3(a2)
  2007.     clr.b    4(a2)
  2008.     move.l    base_tadr(pc),a1
  2009.     add.w    #$80*1*8+7,a1
  2010.     move.w    palet_tbl(pc),d1
  2011.     bsr    cgwr
  2012.     moveq.l    #0,d0
  2013.     move.b    p_bank_lsb(a5),d0
  2014.     bsr    num_to_str
  2015.     lea    suji+7(pc),a2
  2016.     move.b    #'-',3(a2)
  2017.     clr.b    4(a2)
  2018.     addq.w    #4,a1
  2019.     bsr    cgwr
  2020.     bra    disp_timbre
  2021. 1:                    *14ビット表示(mode=1)
  2022.     move.w    d0,d1
  2023.     andi.w    #$7f00,d0
  2024.     andi.w    #$7f,d1
  2025.     lsr.w    d0
  2026.     or.b    d1,d0
  2027. 2:
  2028.     bsr    num_to_str
  2029.     lea    suji+5(pc),a2
  2030.     move.b    #'-',5(a2)
  2031.     clr.b    6(a2)
  2032.     move.l    base_tadr(pc),a1
  2033.     add.w    #$80*1*8+7,a1
  2034.     move.w    palet_tbl(pc),d1
  2035.     bsr    cgwr
  2036. disp_timbre:                *(here will be patched)
  2037.     bsr.w    set_timbre_ofs
  2038.     moveq.l    #0,d0
  2039.     move.w    p_pgm(a5),d0
  2040.     tas.b    (a4)+
  2041.     addq.w    #1,a4
  2042.     beq    @f
  2043.     cmp.w    (a4),d0
  2044.     bne    @f
  2045.     addq.w    #2,a4
  2046.     bra    disp_velo
  2047. @@:
  2048.     move.w    d0,(a4)+
  2049.     move.l    base_tadr(pc),a1
  2050.     add.w    #$80*1*8+7,a1
  2051.     tst.b    bank_mode-zsv_work(a6)
  2052.     bne    @f            *lsb表示モードの時にlsbが-1ならば
  2053.                     *mode=0(上位7bit)
  2054.     tst.b    -5(a4)            *check lsb
  2055.     bmi    1f
  2056. @@:                    *mode=1(14bit) or 2(7:7:7)
  2057.     cmpi.w    #-1,-6(a4)        *check bank
  2058.     beq    1f
  2059.     addq.w    #6,a1
  2060.     cmpi.b    #2,bank_mode-zsv_work(a6)
  2061.     bne    @f
  2062.                     *mode=2(7bit:7bit:7bit表示モードならば)
  2063.     addq.w    #2,a1
  2064.     addq.w    #1,d0
  2065.     bsr    num_to_str
  2066.     lea    suji+7(pc),a2
  2067.     move.w    palet_tbl(pc),d1
  2068.     bsr    cgwr
  2069.     bra    disp_velo
  2070. @@:
  2071.     addq.w    #1,d0
  2072.     bsr    num_to_str
  2073.     lea    suji+5(pc),a2
  2074.     move.w    palet_tbl(pc),d1
  2075.     bsr    cgwr
  2076.     bra    disp_velo
  2077. 1:                    *5桁表示
  2078.     addq.w    #1,d0
  2079.     bsr    num_to_str
  2080.     lea    suji+5(pc),a2
  2081.     move.w    palet_tbl(pc),d1
  2082.     bsr    cgwr
  2083.     addq.w    #5,a1
  2084.     lea    timbre_bkspc(pc),a2
  2085.     bsr    cgwr
  2086. disp_velo:                *(here will be patched)
  2087.     bsr.w    set_velo_ofs
  2088.     moveq.l    #0,d0
  2089.     move.b    p_velo(a5),d0
  2090.     btst.b    #b_disp_mod,disp_mode-zsv_work(a6)
  2091.     beq    1f
  2092.     btst.b    #b_disp_vol,disp_mode-zsv_work(a6)
  2093.     beq    @f
  2094.     move.l    trkwkadr_adr-zsv_work(a6),a1
  2095.     move.w    8(a1),d0
  2096.     bra    1f
  2097. @@:
  2098.     lea    p_vseq_param(a5),a1
  2099.     move.b    p_arcc_origin(a1),d0
  2100. 1:
  2101.     tas.b    (a4)+
  2102.     beq    @f
  2103.     cmp.b    (a4),d0
  2104.     bne    @f
  2105.     addq.w    #1,a4
  2106.     bra    disp_dtn
  2107. @@:
  2108.     move.b    d0,(a4)+
  2109.     btst.b    #b_disp_vol,disp_mode-zsv_work(a6)
  2110.     bne    @f
  2111.     bsr    num_to_str
  2112.     move.l    base_tadr(pc),a1
  2113.     add.w    #$80*8*1+39,a1
  2114.     lea    Vanish_volvelo(pc),a2
  2115.     moveq.l    #paletf0,d1
  2116.     bsr    cgwr
  2117.     lea    suji+7(pc),a2
  2118.     move.w    palet_tbl(pc),d1
  2119.     bsr    cgwr
  2120.     bra    disp_dtn
  2121. @@:
  2122.     move.l    base_tadr(pc),a1
  2123.     add.w    #$80*8*1+39,a1
  2124.     lea    Vanish_volvelo(pc),a2
  2125.     moveq.l    #paleta0,d1
  2126.     bsr    cgwr
  2127.     move.w    #palet50,d1
  2128.     tst.w    p_type(a5)
  2129.     bne    2f
  2130.     cmpi.w    #7,d4
  2131.     bne    @f
  2132.     move.l    _zmusic_stat(pc),a2
  2133.     tst.b    $0f+_opm(a2)
  2134.     bpl    @f
  2135.     bsr    draw_hbar_fm_noise
  2136.     bra    1f
  2137. @@:
  2138.     bsr    draw_hbar_fm        *< d0.b=0-127
  2139.     bra    1f
  2140. 2:
  2141.     bsr    draw_hbar        *< d0.b=0-127
  2142. 1:
  2143. disp_dtn:                *detune
  2144.     move.w    p_detune(a5),d0
  2145.     ext.l    d0
  2146.     move.l    d0,d5
  2147.     tas.b    (a4)+
  2148.     addq.w    #1,a4
  2149.     beq    @f
  2150.     cmp.w    (a4),d0
  2151.     bne    @f
  2152.     addq.w    #2,a4
  2153.     bra    disp_pitch
  2154. @@:
  2155.     move.w    d0,(a4)+
  2156.     bsr    num_to_str
  2157.     move.l    base_tadr(pc),a1
  2158.     add.w    #$80*8*1+50,a1
  2159.     lea    suji+4(pc),a2
  2160.     move.b    d0,(a2)            *1文字目
  2161.     move.w    palet_tbl(pc),d1
  2162.     bsr    cgwr
  2163. disp_pitch:                *ピッチベンダー
  2164. *    moveq.l    #0,d0
  2165. *    tst.b    p_port_flg(a5)    *ポルタメントチェック
  2166. *    bne    @f
  2167. *    tst.b    p_bend_sw(a5)    *オートベンドチェック
  2168. *    beq    1f
  2169. *@@:
  2170.     move.w    p_port_pitch(a5),d0
  2171.     ext.l    d0
  2172. 1:
  2173.     add.l    d0,d5
  2174.     tas.b    (a4)+
  2175.     addq.w    #1,a4
  2176.     beq    @f
  2177.     cmp.w    (a4),d0
  2178.     bne    @f
  2179.     addq.w    #2,a4
  2180.     bra    disp_hold
  2181. @@:
  2182.     move.w    d0,(a4)+
  2183.     move.l    base_tadr(pc),a1
  2184.     bsr    num_to_str
  2185.     add.w    #$80*8*1+63,a1
  2186.     lea    suji+4(pc),a2
  2187.     move.b    d0,(a2)            *1文字目
  2188.     move.w    palet_tbl(pc),d1
  2189.     bsr    cgwr
  2190. disp_hold:                *ダンパー
  2191.     moveq.l    #0,d0
  2192.     move.b    p_damper(a5),d0
  2193.     tas.b    (a4)+
  2194.     beq    @f
  2195.     cmp.b    (a4),d0
  2196.     bne    @f
  2197.     addq.w    #1,a4
  2198.     bra    disp_trmode
  2199. @@:
  2200.     moveq.l    #0,d1
  2201.     move.b    (a4),d1
  2202.     move.b    d0,(a4)+
  2203.     move.l    base_tadr(pc),a1
  2204.     lea    94+$80*2*8+$80*7(a1),a3    *x=48,y=2
  2205.     bsr    draw_pedal
  2206.     bsr    num_to_str
  2207.     add.w    #$80*8*1+85,a1
  2208.     lea    suji+7(pc),a2
  2209.     move.w    palet_tbl(pc),d1
  2210.     bsr    cgwr
  2211. disp_trmode:
  2212.     move.b    p_track_mode(a5),d0
  2213.     tas.b    (a4)+
  2214.     beq    @f
  2215.     cmp.b    (a4),d0
  2216.     bne    @f
  2217.     addq.w    #1,a4
  2218.     bra    disp_aftc
  2219. @@:
  2220.     move.b    d0,(a4)+
  2221.     move.l    base_tadr(pc),a1
  2222.     lea    94+$80*3*8(a1),a3    *x=48,y=3
  2223.     bsr    draw_lamp
  2224. disp_aftc:                *アフタータッチ
  2225.     moveq.l    #-1,d0
  2226.     tst.b    p_aftc_sw(a5)
  2227.     beq    @f
  2228.     btst.b    #b_aftc_first,p_aftc_flg(a5)    *!3/26
  2229.     beq    @f                *!3/26
  2230.     btst.b    #b_disp_mod,disp_mode-zsv_work(a6)
  2231.     bne    aftrltm
  2232.     moveq.l    #0,d1            *振幅表示
  2233.     move.b    p_aftc_n(a5),d1
  2234.     bmi    @f
  2235.     btst.b    d1,p_aftc_omt(a5)
  2236.     beq    @f
  2237.     moveq.l    #0,d0
  2238.     move.b    p_aftc_tbl(a5,d1.w),d0
  2239.     bra    @f
  2240. aftrltm:                *リアルタイム表示ケース
  2241.     moveq.l    #0,d0
  2242.     move.b    p_aftc_level(a5),d0
  2243. @@:
  2244.     tas.b    (a4)+
  2245.     beq    @f
  2246.     cmp.b    (a4),d0
  2247.     bne    @f
  2248.     addq.w    #1,a4
  2249.     bra    disp_vib
  2250. @@:
  2251.     move.b    d0,(a4)+
  2252.     bpl    @f
  2253.     lea    aftc_off(pc),a2
  2254.     bra    do_dspaft
  2255. @@:
  2256.     bsr    num_to_str
  2257.     lea    suji+7(pc),a2
  2258. do_dspaft:
  2259.     move.l    base_tadr(pc),a1
  2260.     lea    76+$80*1*8(a1),a1
  2261.     move.w    palet_tbl(pc),d1
  2262.     bsr    cgwr
  2263. disp_vib:                *ビブラート振幅の表示
  2264.     moveq.l    #0,d0
  2265.     tst.b    p_pmod_sw(a5)
  2266.     beq    @f
  2267.     btst.b    #b_pmod_first,p_pmod_flg(a5)    *!3/26
  2268.     beq    @f                *!3/26
  2269.     btst.b    #b_disp_mod,disp_mode-zsv_work(a6)
  2270.     bne    pmdrltm
  2271.     moveq.l    #0,d1            *振幅表示
  2272.     move.b    p_pmod_n(a5),d1
  2273.     bmi    @f
  2274.     move.w    p_pmod_dpt_now(a5),d0
  2275.     btst.b    d1,p_pmod_omt(a5)    *省略の場合は前回のものを継続
  2276.     beq    @f
  2277.     add.w    d1,d1
  2278.     move.w    p_pmod_pitch(a5),d0
  2279.     ext.l    d0
  2280.     btst.b    #0,p_pmod_mode(a5)
  2281.     bne    1f
  2282.                     *(64range→683range)
  2283.     asl.l    #5,d0            *32倍
  2284.     divs    #3,d0            */3    (pmd*8192)/(64*12)
  2285.     ext.l    d0
  2286. 1:
  2287.     add.l    d0,d5
  2288.     move.w    p_pmod_dpt_tbl(a5,d1.w),d0
  2289.     ext.l    d0
  2290.     bra    @f
  2291. pmdrltm:                *リアルタイム表示ケース
  2292.     move.w    p_pmod_pitch(a5),d0
  2293.     ext.l    d0
  2294.     btst.b    #0,p_pmod_mode(a5)
  2295.     bne    1f
  2296.                     *(64range→683range)
  2297.     asl.l    #5,d0            *32倍
  2298.     divs    #3,d0            */3    (pmd*8192)/(64*12)
  2299.     ext.l    d0
  2300. 1:
  2301.     add.l    d0,d5
  2302. @@:
  2303.     tas.b    (a4)+
  2304.     addq.w    #1,a4
  2305.     beq    @f
  2306.     cmp.w    (a4),d0
  2307.     bne    @f
  2308.     addq.w    #2,a4
  2309.     bra    disp_pmdwf
  2310. @@:
  2311.     move.w    d0,(a4)+
  2312.     bsr    num_to_str
  2313.     move.l    base_tadr(pc),a1
  2314.     add.w    #$80*2*8+60,a1
  2315.     lea    suji+4(pc),a2
  2316.     move.b    d0,(a2)            *1文字目
  2317.     move.w    palet_tbl(pc),d1
  2318.     bsr    cgwr
  2319. disp_pmdwf:                *波形タイプ表示
  2320.     moveq.l    #0,d0
  2321.     move.b    p_pmod_sw(a5),d2
  2322.     beq    @f
  2323.     btst.b    #b_pmod_first,p_pmod_flg(a5)    *!3/26
  2324.     beq    @f                *!3/26
  2325.     move.w    p_pmod_wf(a5),d0
  2326. @@:
  2327.     tas.b    (a4)+
  2328.     addq.w    #1,a4
  2329.     beq    @f
  2330.     cmp.w    (a4),d0
  2331.     bne    @f
  2332.     addq.w    #2,a4
  2333.     bra    disp_pmdvrnt
  2334. @@:
  2335.     move.w    d0,(a4)+
  2336.     bpl    pmdprstwf        *プリセット波形
  2337.     andi.w    #$7fff,d0
  2338.     addq.l    #8,d0            *USER波形は8番から始まるから
  2339.     bsr    num_to_str
  2340.     lea    suji+5(pc),a2
  2341.     bra    @f
  2342. pmdprstwf:
  2343.     lea    DUMMY_wf(pc),a2        *スイッチオフの時の波形名
  2344.     tst.b    d2
  2345.     beq    @f
  2346.     lea    WAVE_tbl(pc),a2
  2347.     lsl.w    #3,d0
  2348.     add.w    d0,a2
  2349. @@:
  2350.     move.l    base_tadr(pc),a1
  2351.     add.w    #$80*2*8+72,a1
  2352.     move.w    palet_tbl(pc),d1
  2353.     bsr    cgwr
  2354. disp_pmdvrnt:                *増減値表示
  2355.     moveq.l    #0,d0
  2356.     tst.b    p_pmod_sw(a5)
  2357.     beq    @f
  2358.     btst.b    #b_pmod_first,p_pmod_flg(a5)    *!3/26
  2359.     beq    @f                *!3/26
  2360.     btst.b    #b_pmod_dpn,p_pmod_flg(a5)
  2361.     beq    @f
  2362.     move.w    p_pmod_dpndpt(a5),d0
  2363.     ext.l    d0
  2364. @@:
  2365.     tas.b    (a4)+
  2366.     addq.w    #1,a4
  2367.     beq    @f
  2368.     cmp.w    (a4),d0
  2369.     bne    @f
  2370.     addq.w    #2,a4
  2371.     bra    disp_pitchbar
  2372. @@:
  2373.     move.w    d0,(a4)+
  2374.     bsr    num_to_str
  2375.     lea    suji+4(pc),a2
  2376.     move.b    d0,(a2)
  2377.     move.l    base_tadr(pc),a1
  2378.     add.w    #$80*2*8+86,a1
  2379.     move.w    palet_tbl(pc),d1
  2380.     bsr    cgwr
  2381. disp_pitchbar:
  2382.     cmpi.l    #-16384,d5    *範囲縮小
  2383.     bge    @f
  2384.     move.l    #-16384,d5
  2385.     bra    1f
  2386. @@:
  2387.     cmpi.l    #16383,d5
  2388.     ble    1f
  2389.     move.l    #16383,d5
  2390. 1:
  2391.     tas.b    (a4)+
  2392.     addq.w    #1,a4
  2393.     beq    @f
  2394.     cmp.l    (a4),d5
  2395.     bne    @f
  2396.     addq.w    #4,a4
  2397.     bra    disp_arcc
  2398. @@:
  2399.     move.l    (a4),d1
  2400.     move.l    d5,(a4)+
  2401.     move.l    base_tadr(pc),a1
  2402.     lea    48+$80*3*8+$80*7(a1),a3    *x=48,y=3
  2403.     bsr    draw_bender        *<a3.l=addr,d1=previous,d0=now
  2404. disp_arcc:                *ARCC振幅表示
  2405.     moveq.l    #0,d0
  2406.     move.b    p_vol(a5),d0
  2407.     move.w    d0,volume_val-zsv_work(a6)    *FM/ADPCM ARCC VOLUME考慮用
  2408.     move.b    p_pan(a5),d0
  2409.     bpl    @f
  2410.     moveq.l    #-1,d0
  2411. @@:
  2412.     move.w    d0,panpot_val-zsv_work(a6)    *ADPCM ARCC PAN考慮用
  2413.     moveq.l    #arcc_max-1,d5
  2414.     move.l    base_tadr(pc),a1
  2415.     add.w    #$80*2*8+6,a1
  2416.     lea    p_arcc_param(a5),a0
  2417. disparcc_lp:
  2418.     pea    $80*8(a1)
  2419.     moveq.l    #0,d0
  2420.     tst.b    p_arcc_sw(a0)
  2421.     beq    1f
  2422.     btst.b    #b_arcc_first,p_arcc_flg(a0)    *!3/26
  2423.     beq    1f                *!3/26
  2424.     btst.b    #b_disp_mod,disp_mode-zsv_work(a6)
  2425.     bne    arccrltm        リアルタイム
  2426.     moveq.l    #0,d1            *振幅表示
  2427.     move.b    p_arcc_n(a0),d1
  2428.     bmi    1f
  2429.     move.b    p_arcc_level(a0),d2
  2430.     move.b    p_arcc_dpt_now(a0),d0
  2431.     btst.b    d1,p_arcc_omt(a0)    *省略の場合は前回のものを継続
  2432.     beq    @f
  2433.     move.b    p_arcc_dpt_tbl(a0,d1.w),d0
  2434.     bra    @f
  2435. arccrltm:                *リアルタイム表示ケース
  2436.     move.b    p_arcc_level(a0),d0
  2437. 1:
  2438.     move.l    d0,d2
  2439. @@:
  2440.     tas.b    (a4)+
  2441.     beq    @f
  2442.     cmp.b    (a4),d0
  2443.     bne    @f
  2444.     addq.w    #1,a4
  2445.     bra    disp_arccbar
  2446. @@:
  2447.     move.b    d0,(a4)+
  2448.     ext.w    d0
  2449.     ext.l    d0
  2450.     bsr    num_to_str
  2451.     lea    suji+6(pc),a2
  2452.     move.b    d0,(a2)            *1文字目
  2453.     move.w    palet_tbl(pc),d1
  2454.     bsr    cgwr
  2455. disp_arccbar:
  2456.     tas.b    (a4)+
  2457.     beq    @f
  2458.     cmp.b    (a4),d2
  2459.     bne    @f
  2460.     addq.w    #1,a4
  2461.     bra    1f
  2462. @@:
  2463.     move.b    (a4),d1
  2464.     move.b    d2,(a4)+
  2465.     lea    40+$80*15(a1),a3
  2466.     btst.l    #0,d5
  2467.     bne    @f
  2468.     sub.w    #$80*8,a3
  2469.     addq.w    #1,a3            *表示位置座標補正
  2470. @@:
  2471.     bsr    draw_arccbar        *ARCCの棒グラフ表示
  2472. 1:
  2473.     ext.w    d2
  2474.     move.b    p_arcc(a0),d1
  2475.     tst.w    p_type(a5)
  2476.     bne    1f
  2477.     tst.b    d1
  2478.     bmi    disp_arccwf        *特殊なARCCの場合
  2479.     beq    2f            *p_arcc未設定の場合
  2480.     move.l    _zmusic_stat(pc),a3
  2481.     lea    _opm-zmusic_stat(a3),a3
  2482.     move.b    $20(a3,d4.w),d0        *AF
  2483.     andi.w    #7,d0
  2484.     move.b    @f(pc,d0.w),d0
  2485.     and.b    d1,d0
  2486.     bne    2f
  2487.     bra    disp_arccwf
  2488. @@:
  2489.     dc.b    %1000        *AL0
  2490.     dc.b    %1000        *AL1
  2491.     dc.b    %1000        *AL2
  2492.     dc.b    %1000        *AL3
  2493.     dc.b    %1010        *AL4
  2494.     dc.b    %1110        *AL5
  2495.     dc.b    %1110        *AL6
  2496.     dc.b    %1111        *AL7
  2497. 1:
  2498.     cmpi.b    #MIDI_VOL,d1
  2499.     bne    3f
  2500. 2:
  2501.     add.w    d2,volume_val-zsv_work(a6)
  2502.     bra    disp_arccwf
  2503. 3:
  2504.     cmpi.b    #MIDI_PAN,d1
  2505.     bne    disp_arccwf
  2506.     add.w    d2,panpot_val-zsv_work(a6)
  2507. disp_arccwf:                *波形タイプ表示
  2508.     add.w    #10,a1
  2509.     moveq.l    #0,d0
  2510.     move.b    p_arcc_sw(a0),d2
  2511.     beq    @f
  2512.     btst.b    #b_arcc_first,p_arcc_flg(a0)    *!3/26
  2513.     beq    @f                *!3/26
  2514.     move.w    p_arcc_wf(a0),d0
  2515. @@:
  2516.     tas.b    (a4)+
  2517.     addq.w    #1,a4
  2518.     beq    @f
  2519.     cmp.w    (a4),d0
  2520.     bne    @f
  2521.     addq.w    #2,a4
  2522.     bra    disp_arccvrnt
  2523. @@:
  2524.     move.w    d0,(a4)+
  2525.     bpl    arccprstwf        *プリセット波形
  2526.     andi.w    #$7fff,d0
  2527.     addq.l    #8,d0            *USER波形は8番から始まるから
  2528.     bsr    num_to_str
  2529.     lea    suji+5(pc),a2
  2530.     bra    @f
  2531. arccprstwf:
  2532.     lea    DUMMY_wf(pc),a2        *スイッチオフの時の波形名
  2533.     tst.w    p_type(a5)
  2534.     bpl    1f
  2535.     tst.b    p_arcc_mode(a0)
  2536.     bmi    @f            *MIDIでノーマルARCCの場合は波形表示無し
  2537. 1:
  2538.     tst.b    d2
  2539.     beq    @f
  2540.     lea    WAVE_tbl(pc),a2
  2541.     lsl.w    #3,d0
  2542.     add.w    d0,a2
  2543. @@:
  2544.     move.w    palet_tbl(pc),d1
  2545.     bsr    cgwr
  2546. disp_arccvrnt:                *増減値表示
  2547.     add.w    #14,a1
  2548.     moveq.l    #0,d0
  2549.     tst.b    p_arcc_sw(a0)
  2550.     beq    @f
  2551.     btst.b    #b_arcc_first,p_arcc_flg(a0)    *!3/26
  2552.     beq    @f                *!3/26
  2553.     btst.b    #b_arcc_dpn,p_arcc_flg(a0)
  2554.     beq    @f
  2555.     move.w    p_arcc_dpndpt(a0),d0
  2556.     ext.l    d0
  2557. @@:
  2558.     tas.b    (a4)+
  2559.     addq.w    #1,a4
  2560.     beq    @f
  2561.     cmp.w    (a4),d0
  2562.     bne    @f
  2563.     addq.w    #2,a4
  2564.     bra    disp_ctrl
  2565. @@:
  2566.     move.w    d0,(a4)+
  2567.     bsr    num_to_str
  2568.     lea    suji+4(pc),a2
  2569.     move.b    d0,(a2)
  2570.     move.w    palet_tbl(pc),d1
  2571.     bsr    cgwr
  2572. disp_ctrl:
  2573.     add.w    #12,a1
  2574.     moveq.l    #-1,d0
  2575.     tst.b    p_arcc_sw(a0)
  2576.     beq    @f
  2577.     btst.b    #b_arcc_first,p_arcc_flg(a0)    *!3/26
  2578.     beq    @f                *!3/26
  2579.     moveq.l    #0,d0
  2580.     move.b    p_arcc(a0),d0
  2581. @@:
  2582.     tas.b    (a4)+
  2583.     beq    @f
  2584.     cmp.b    (a4),d0
  2585.     bne    @f
  2586.     addq.w    #1,a4
  2587.     bra    next_disp_arcc
  2588. @@:
  2589.     move.b    d0,(a4)+
  2590.     moveq.l    #paletf0,d1
  2591.     lea    Vanish_ctrl(pc),a2
  2592.     bsr    cgwr
  2593.     lea    DUMMY_ctrl(pc),a2        *スイッチオフの時のコントロール名
  2594.     tst.b    d0
  2595.     bmi    do_disp_ctrl
  2596.     tst.w    p_type(a5)
  2597.     beq    @f
  2598.     bsr    num_to_str        *MIDI/ADPCMの場合は普通にコントロール番号を表示する
  2599.     lea    suji+7(pc),a2
  2600.     move.b    #' ',3(a2)        *後ろスペース追加
  2601.     clr.b    4(a2)
  2602.     bra    do_disp_ctrl
  2603. @@:                    *FM
  2604.     tst.b    d0
  2605.     bmi    disp_fm_arcc
  2606.     bne    @f
  2607.     move.l    _cf(pc),a2
  2608.     move.b    (a2,d4.w),d0
  2609. @@:
  2610.     lea    arcc_op(pc),a2        *通常のオペレータコントロール
  2611.     moveq.l    #arcc_max-1,d2
  2612. dispoplp:
  2613.     move.w    palet_tbl(pc),d1
  2614.     lsr.b    d0
  2615.     bcc    @f
  2616.     or.w    palet_tbl+4(pc),d1        *ON mark atr
  2617. @@:
  2618.     bsr    cgwr
  2619.     addq.w    #1,a1
  2620.     addq.w    #2,a2
  2621.     dbra    d2,dispoplp
  2622.     bra    next_disp_arcc
  2623. disp_fm_arcc:
  2624.     andi.w    #$7f,d0
  2625.     lea    fm_arcc_tbl(pc),a2
  2626.     move.l    d0,d1
  2627.     add.w    d0,d0
  2628.     add.w    d0,d0
  2629.     add.w    d1,d0        *5倍
  2630.     add.w    d0,a2
  2631. do_disp_ctrl:
  2632.     move.w    palet_tbl(pc),d1
  2633.     bsr    cgwr
  2634. next_disp_arcc:
  2635.     move.l    (sp)+,a1
  2636.     lea    __arcc_len(a0),a0
  2637.     dbra    d5,disparcc_lp
  2638. disp_vol:
  2639.     move.w    p_type(a5),d2
  2640.     bpl    1f
  2641.                     *MIDI
  2642.     move.l    _common_buffer(pc),a3
  2643.     lea    mm0_adr-trk_buffer_top(a3),a3
  2644.     lsl.w    #2,d2
  2645.     move.l    (a3,d2.w),a3
  2646.     move.w    d4,d2
  2647.     mulu    #chwklen,d2
  2648.     moveq.l    #0,d0
  2649.     move.b    __b0+7(a3,d2.l),d0
  2650.     bra    2f
  2651. 1:                    *FM,ADPCM
  2652.     moveq.l    #0,d0
  2653.     move.w    volume_val(pc),d0
  2654. 2:
  2655.     btst.b    #b_disp_mod,disp_mode-zsv_work(a6)
  2656.     bne    @f
  2657.     moveq.l    #0,d0
  2658.     move.b    p_vol(a5),d0
  2659. @@:
  2660.     reduce_vol    d0
  2661. vol_chk:                *(here will be patched)
  2662.     bsr.w    set_vol_ofs
  2663.     tas.b    (a4)+
  2664.     beq    @f
  2665.     cmp.b    (a4),d0
  2666.     bne    @f
  2667.     addq.w    #1,a4
  2668.     bra    disp_pan
  2669. @@:
  2670.     move.b    d0,(a4)+
  2671.     btst.b    #b_disp_vol,disp_mode-zsv_work(a6)
  2672.     bne    @f
  2673.     bsr    num_to_str
  2674.     move.l    base_tadr(pc),a1
  2675.     add.w    #$80*8*1+26,a1
  2676.     lea    Vanish_volvelo(pc),a2
  2677.     moveq.l    #paletf0,d1
  2678.     bsr    cgwr
  2679.     lea    suji+7(pc),a2
  2680.     move.w    palet_tbl(pc),d1
  2681.     bsr    cgwr
  2682.     bra    disp_pan
  2683. @@:
  2684.     move.l    base_tadr(pc),a1
  2685.     add.w    #$80*8*1+26,a1
  2686.     lea    Vanish_volvelo(pc),a2
  2687.     moveq.l    #palet60,d1
  2688.     bsr    cgwr
  2689.     move.w    #palet90,d1
  2690.     tst.w    p_type(a5)
  2691.     bne    2f
  2692.     cmpi.w    #7,d4
  2693.     bne    @f
  2694.     move.l    _zmusic_stat(pc),a2
  2695.     tst.b    $0f+_opm(a2)
  2696.     bpl    @f
  2697.     bsr    draw_hbar_fm_noise
  2698.     bra    1f
  2699. @@:
  2700.     bsr    draw_hbar_fm        *< d0.b=0-127
  2701.     bra    1f
  2702. 2:
  2703.     bsr    draw_hbar        *< d0.b=0-127
  2704. 1:
  2705. disp_pan:
  2706.     move.w    p_type(a5),d2
  2707.     beq    @f
  2708.     bpl    1f
  2709.                 *MIDI
  2710.     move.l    _common_buffer(pc),a3
  2711.     lea    mm0_adr-trk_buffer_top(a3),a3
  2712.     lsl.w    #2,d2
  2713.     move.l    (a3,d2.w),a3
  2714.     move.w    d4,d2
  2715.     mulu    #chwklen,d2
  2716.     moveq.l    #0,d0
  2717.     move.b    __b0+10(a3,d2.l),d0
  2718.     bra    pan_chk
  2719. @@:                    *FM
  2720.     move.l    _zmusic_stat(pc),a3
  2721.     lea    _opm-zmusic_stat(a3),a3
  2722.     moveq.l    #0,d0
  2723.     move.b    $20(a3,d4.w),d0        *AF
  2724.     rol.b    #2,d0
  2725.     andi.w    #$3,d0
  2726.     move.b    @f(pc,d0.w),d0
  2727.     bra    pan_chk
  2728. @@:
  2729.     dc.b    -1,0,127,64
  2730. 1:                    *ADPCM
  2731.     moveq.l    #0,d0
  2732.     move.w    panpot_val(pc),d0
  2733.     bpl    @f
  2734.     moveq.l    #-1,d0
  2735.     bra    pan_chk
  2736. @@:
  2737.     reduce_vol    d0
  2738. pan_chk:                *(here will be patched)
  2739.     bsr.w    set_pan_ofs
  2740.     tas.b    (a4)+
  2741.     beq    @f
  2742.     cmp.b    (a4),d0
  2743.     bne    @f
  2744.     addq.w    #1,a4
  2745.     bra    disp_vseq
  2746. @@:
  2747.     move.b    d0,(a4)+
  2748.     bpl    @f
  2749.     move.l    base_tadr(pc),a1    *OFF case
  2750.     lea    $80*8*2+92(a1),a1
  2751.     bsr    draw_pan_scale
  2752.     move.l    base_tadr(pc),a1    *OFF case
  2753.     add.w    #$80*8*1+93,a1
  2754.     lea    off_str(pc),a2
  2755.     move.w    palet_tbl(pc),d1
  2756.     bsr    cgwr
  2757.     bra    disp_vseq
  2758. @@:
  2759.     move.l    base_tadr(pc),a1
  2760.     lea    $80*8*2+92(a1),a3
  2761.     move.w    palet_tbl(pc),d1
  2762.     bsr    draw_pan        *トリム表示
  2763.     add.w    #$80*8*1+93,a1
  2764.     tst.b    pan_mode-zsv_work(a6)    *パンの表示モードチェック
  2765.     bne    @f
  2766.     bsr    num_to_str
  2767.     lea    suji+7(pc),a2
  2768.     bsr    cgwr
  2769.     bra    disp_vseq
  2770. @@:
  2771.     moveq.l    #0,d1
  2772.     moveq.l    #' ',d2
  2773.     cmpi.b    #64,d0
  2774.     beq    disppan        *M
  2775.     bcs    @f
  2776.     move.l    d0,d1        *R
  2777.     moveq.l    #'R',d2
  2778.     sub.b    #64,d1
  2779.     bra    disppan
  2780. @@:                *L
  2781.     move.l    d0,d1
  2782.     bne    @f
  2783.     moveq.l    #1,d1        *L64→L63
  2784. @@:
  2785.     moveq.l    #'L',d2
  2786.     sub.b    #64,d1
  2787.     neg.b    d1
  2788. disppan:
  2789.     move.l    d1,d0
  2790.     bsr    num_to_str
  2791.     lea    suji+7(pc),a2
  2792.     move.b    d2,(a2)
  2793.     move.w    palet_tbl(pc),d1
  2794.     bsr    cgwr
  2795. disp_vseq:
  2796.     lea    p_vseq_param(a5),a0
  2797.     moveq.l    #0,d0
  2798.     tst.b    p_arcc_sw(a0)
  2799.     beq    @f
  2800.     btst.b    #b_arcc_first,p_arcc_flg(a0)    *!3/26
  2801.     beq    @f                *!3/26
  2802.     btst.b    #b_disp_mod,disp_mode-zsv_work(a6)
  2803.     bne    vseqrltm
  2804.     moveq.l    #0,d1            *振幅表示
  2805.     move.b    p_arcc_n(a0),d1
  2806.     bmi    @f
  2807.     move.b    p_arcc_dpt_tbl(a0,d1.w),d0
  2808.     bra    @f
  2809. vseqrltm:                *リアルタイム表示ケース
  2810.     move.b    p_arcc_level(a0),d0
  2811. @@:
  2812.     tas.b    (a4)+
  2813.     beq    @f
  2814.     cmp.b    (a4),d0
  2815.     bne    @f
  2816.     addq.w    #1,a4
  2817.     bra    disp_vseqwf
  2818. @@:
  2819.     move.b    d0,(a4)+
  2820.     ext.w    d0
  2821.     ext.l    d0
  2822.     bsr    num_to_str
  2823.     lea    suji+6(pc),a2
  2824.     move.b    d0,(a2)            *1文字目
  2825.     move.l    base_tadr(pc),a1
  2826.     add.w    #62+$80*3*8,a1
  2827.     move.w    palet_tbl(pc),d1
  2828.     bsr    cgwr
  2829. disp_vseqwf:                *波形タイプ表示
  2830.     moveq.l    #0,d0
  2831.     move.b    p_arcc_sw(a0),d2
  2832.     beq    @f
  2833.     btst.b    #b_arcc_first,p_arcc_flg(a0)    *!3/26
  2834.     beq    @f                *!3/26
  2835.     move.w    p_arcc_wf(a0),d0
  2836. @@:
  2837.     tas.b    (a4)+
  2838.     addq.w    #1,a4
  2839.     beq    @f
  2840.     cmp.w    (a4),d0
  2841.     bne    @f
  2842.     addq.w    #2,a4
  2843.     bra    disp_vseqvrnt
  2844. @@:
  2845.     move.w    d0,(a4)+
  2846.     bpl    vseqprstwf        *プリセット波形
  2847.     andi.w    #$7fff,d0
  2848.     addq.l    #8,d0            *USER波形は8番から始まるから
  2849.     bsr    num_to_str
  2850.     lea    suji+5(pc),a2
  2851.     bra    @f
  2852. vseqprstwf:
  2853.     lea    DUMMY_wf(pc),a2        *スイッチオフの時の波形名
  2854.     tst.b    d2
  2855.     beq    @f
  2856.     lea    WAVE_tbl(pc),a2
  2857.     lsl.w    #3,d0
  2858.     add.w    d0,a2
  2859. @@:
  2860.     move.w    palet_tbl(pc),d1
  2861.     move.l    base_tadr(pc),a1
  2862.     add.w    #72+$80*3*8,a1
  2863.     bsr    cgwr
  2864. disp_vseqvrnt:                *増減値表示
  2865.     moveq.l    #0,d0
  2866.     tst.b    p_arcc_sw(a0)
  2867.     beq    @f
  2868.     btst.b    #b_arcc_first,p_arcc_flg(a0)    *!3/26
  2869.     beq    @f                *!3/26
  2870.     btst.b    #b_arcc_dpn,p_arcc_flg(a0)
  2871.     beq    @f
  2872.     move.w    p_arcc_dpndpt(a0),d0
  2873.     ext.l    d0
  2874. @@:
  2875.     tas.b    (a4)+
  2876.     addq.w    #1,a4
  2877.     beq    @f
  2878.     cmp.w    (a4),d0
  2879.     bne    @f
  2880.     addq.w    #2,a4
  2881.     bra    disp_kbd
  2882. @@:
  2883.     move.w    d0,(a4)+
  2884.     bsr    num_to_str
  2885.     lea    suji+4(pc),a2
  2886.     move.b    d0,(a2)
  2887.     move.w    palet_tbl(pc),d1
  2888.     move.l    base_tadr(pc),a1
  2889.     add.w    #86+$80*3*8,a1
  2890.     bsr    cgwr
  2891. disp_kbd:                *鍵盤表示
  2892.     move.l    base_tadr(pc),a1
  2893.     add.w    #$80*8*4,a1
  2894.     add.l    plane(pc),a1        *書き込み座標決定
  2895.     lea    p_note(a5),a2
  2896.  
  2897.     movem.l    a2/a4,-(sp)
  2898.     move.l    a2,d3
  2899. erase_nt_lp1:
  2900.     move.w    (a4)+,d0        *d0.hb=marker,d0.lb=note num.
  2901.     bpl    exit_ersntm
  2902.     ext.w    d0
  2903.     moveq.l    #max_note_on-1,d2
  2904.     move.l    d3,a2
  2905. erase_nt_lp2:
  2906.     tst.b    k_velo(a2)
  2907.     bmi    @f
  2908.     cmp.b    (a2),d0            *同じか
  2909.     beq    erase_nt_lp1
  2910. @@:
  2911.     addq.w    #k_note_len,a2
  2912.     dbra    d2,erase_nt_lp2
  2913.     bsr    erase_key
  2914.     move.l    a4,a0
  2915. @@:
  2916.     move.w    (a0)+,-4(a0)
  2917.     bmi    @b
  2918.     subq.w    #2,a4
  2919.     bra    erase_nt_lp1
  2920. exit_ersntm:
  2921.     movem.l    (sp)+,a2/a4
  2922.     moveq.l    #max_note_on-1,d2
  2923.     move.l    a4,d3
  2924. draw_nt_lp1:
  2925.     moveq.l    #0,d0
  2926.     move.b    (a2),d0
  2927.     bmi    next_drwntm        *つぎへ
  2928.     move.l    d3,a4
  2929. @@:                    *同じものが描かれていないかチェック
  2930.     move.w    (a4)+,d1
  2931.     bpl    @f
  2932.     cmp.b    d0,d1
  2933.     beq    next_drwntm        *同じものが描かれています
  2934.     bra    @b
  2935. @@:
  2936.     clr.w    (a4)            *endcode
  2937.     move.b    d0,-(a4)
  2938.     tas    -(a4)
  2939.     bsr    draw_key
  2940. next_drwntm:
  2941.     addq.w    #k_note_len,a2
  2942.     dbra    d2,draw_nt_lp1
  2943. next_dsptrkprms:
  2944.     add.l    #$80*8*6,base_tadr-zsv_work(a6)
  2945.     addq.w    #1,d7
  2946.     move.l    (sp)+,a4
  2947.     dbra    d6,dstp_lp00
  2948.  
  2949.     bclr.b    #7,f_wait-zsv_work(a6)
  2950.     beq    k_chk
  2951.  
  2952. *    move.l    adr(pc),a0            *!debug
  2953. *    move.l    x_count-zsv_work(a6),(a0)+    *!debug
  2954. *    move.l    a0,adr-zsv_work(a6)        *!debug
  2955. *    subq.l    #1,adr_cnt-zsv_work(a6)        *!debug
  2956. *    beq    go_calc_debug            *!debug
  2957. *    bsr    disp_percentage
  2958. *    clr.l    x_count-zsv_work(a6)
  2959.  
  2960.     move.l    flash_palet(pc),d0
  2961.     swap    d0
  2962.     move.l    d0,flash_palet-zsv_work(a6)
  2963.     move.w    d0,$e8221e
  2964. k_chk:                *キーチェック
  2965. @@:
  2966.     bitsns    $6
  2967.     btst.l    #5,d0        *[SPC]が押されたか
  2968.     bne    @b
  2969.  
  2970.     btst.l    #1,d0        *[,]
  2971.     beq    @f
  2972.     tas.b    mod_k-zsv_work(a6)
  2973.     bne    __m
  2974.     bchg.b    #b_disp_mod,disp_mode-zsv_work(a6)
  2975.     bra    __m
  2976. @@:
  2977.     clr.b    mod_k-zsv_work(a6)
  2978. __m:
  2979.     btst.l    #6,d0        *[HOME]
  2980.     beq    @f
  2981.     tas.b    home_k-zsv_work(a6)
  2982.     bne    __mskrst
  2983.     suba.l    a1,a1
  2984.     moveq.l    #1,d1
  2985.     Z_MUSIC    #ZM_MASK_TRACKS
  2986.     bra    main_lp
  2987. @@:
  2988.     clr.b    home_k-zsv_work(a6)
  2989. __mskrst:
  2990.     tst.b    d0        *[DEL]
  2991.     bpl    @f
  2992.     tas.b    del_k-zsv_work(a6)
  2993.     bne    __bank
  2994.     suba.l    a1,a1
  2995.     moveq.l    #0,d1
  2996.     Z_MUSIC    #ZM_MASK_TRACKS
  2997.     bra    main_lp
  2998. @@:
  2999.     clr.b    del_k-zsv_work(a6)
  3000. __bank:                *[B]
  3001.     bitsns    $5
  3002.     btst.l    #6,d0
  3003.     beq    @f
  3004.     tas.b    bank_k-zsv_work(a6)
  3005.     bne    __volvelo
  3006.     move.b    bank_mode(pc),d0
  3007.     addq.b    #1,d0            *mode=0-2
  3008.     cmpi.b    #2,d0
  3009.     bls    1f
  3010.     moveq.l    #0,d0
  3011. 1:
  3012.     move.b    d0,bank_mode-zsv_work(a6)
  3013.     lea    track_data(pc),a4
  3014.     moveq.l    #disp_max-1,d2
  3015. bnklp:
  3016.     move.w    bank_ofs(pc),d0
  3017.     clr.b    (a4,d0.w)    *チェックビットクリア(bank)
  3018.     move.w    timbre_ofs(pc),d0
  3019.     clr.b    (a4,d0.w)    *チェックビットクリア(timbre)
  3020.     lea    dtsz(a4),a4    *track_dataの構造を変えたら変更する
  3021.     dbra    d2,bnklp
  3022.     bra    main_lp
  3023. @@:
  3024.     clr.b    bank_k-zsv_work(a6)
  3025. __volvelo:
  3026.     btst.l    #5,d0        *[V]
  3027.     beq    @f
  3028.     tas.b    vol_k-zsv_work(a6)
  3029.     bne    1f
  3030.     bchg.b    #b_disp_vol,disp_mode-zsv_work(a6)
  3031.     lea    track_data(pc),a4
  3032.     moveq.l    #disp_max-1,d2
  3033. vlklp:
  3034.     move.w    vol_ofs(pc),d0
  3035.     clr.b    (a4,d0.w)    *チェックビットクリア(vol)
  3036.     move.w    velo_ofs(pc),d0
  3037.     clr.b    (a4,d0.w)    *チェックビットクリア(velo)
  3038.     lea    dtsz(a4),a4    *track_dataの構造を変えたら変更する
  3039.     dbra    d2,vlklp
  3040.     bra    main_lp
  3041. @@:
  3042.     clr.b    vol_k-zsv_work(a6)
  3043. 1:
  3044. __pan:
  3045.     bitsns    $3
  3046.     btst.l    #2,d0        *[P]
  3047.     beq    @f
  3048.     tas.b    pan_k-zsv_work(a6)
  3049.     bne    1f
  3050.     eori.b    #1,pan_mode-zsv_work(a6)
  3051.     lea    track_data(pc),a4
  3052.     moveq.l    #disp_max-1,d2
  3053. pnklp:
  3054.     move.w    pan_ofs(pc),d0
  3055.     clr.b    (a4,d0.w)    *チェックビットクリア(pan)
  3056.     lea    dtsz(a4),a4    *track_dataの構造を変えたら変更する
  3057.     dbra    d2,pnklp
  3058.     bra    main_lp
  3059. @@:
  3060.     clr.b    pan_k-zsv_work(a6)
  3061. 1:                    *スクロール
  3062.     bitsns    $0e
  3063.     btst.l    #3,d0            *[OPT.2]がONなら無視
  3064.     bne    __arrow_u
  3065.     bitsns    $7
  3066.     btst.l    #3,d0            *[←]
  3067.     beq    1f
  3068.     tst.w    scr_x-zsv_work(a6)
  3069.     beq    @f
  3070.     subq.w    #8,scr_x-zsv_work(a6)
  3071.     bsr    do_scroll
  3072.     bra    main_lp
  3073. @@:
  3074.     clr.b    opmmap_flg-zsv_work(a6)
  3075.     bra    main_lp
  3076. 1:
  3077.     btst.l    #5,d0            *[→]
  3078.     beq    1f
  3079.     cmpi.w    #256,scr_x-zsv_work(a6)
  3080.     beq    1f
  3081.     addq.w    #8,scr_x-zsv_work(a6)
  3082.     bsr    do_scroll
  3083.     tas.b    opmmap_flg-zsv_work(a6)
  3084.     bmi    main_lp
  3085.     bsr    draw_opmmap_ttl
  3086.     bra    main_lp
  3087. 1:
  3088. __arrow_u:                *カーソル
  3089.     tst.w    scr_x-zsv_work(a6)
  3090.     bne    __mask
  3091.     bitsns    $0e
  3092.     btst.l    #3,d0            *[OPT.2]がONなら無視
  3093.     bne    __mask
  3094.     bitsns    $7
  3095.     btst.l    #4,d0            *[↑]
  3096.     beq    1f
  3097.     tst.w    disp_start-zsv_work(a6)
  3098.     beq    __roll_u
  3099.     tas    arwu_k-zsv_work(a6)
  3100.     beq    @f
  3101.     btst.b    #0,arwu_k-zsv_work(a6)
  3102.     bne    @f
  3103.     cmpi.b    #KRPT,arwu_krcnt-zsv_work(a6)
  3104.     bcs    2f
  3105.     bset.b    #0,arwu_k-zsv_work(a6)
  3106. @@:
  3107.     subq.w    #1,disp_start-zsv_work(a6)
  3108.     bsr    init_track_data_u
  3109.     move.w    #$00_ff,arwu_krcnt-zsv_work(a6)    *st.b    arwu_krwork-zsv_work(a6)
  3110.     bsr    clr_track_area_u
  3111.     bra    main_lp
  3112. 2:
  3113.     bsr    arwu_krc_ope
  3114.     bra    arrow_d
  3115. 1:
  3116.     move.l    #$ff,arwu_k-zsv_work(a6)        *arwu_krcnt=0,arwu_krwork=$ff
  3117. arrow_d:
  3118.     bitsns    $7
  3119.     btst.l    #6,d0            *[↓]
  3120.     beq    1f
  3121.     cmp.w    #tr_max-10,disp_start-zsv_work(a6)
  3122.     beq    __roll_u
  3123.     tas.b    arwd_k-zsv_work(a6)
  3124.     beq    @f
  3125.     btst.b    #0,arwd_k-zsv_work(a6)
  3126.     bne    @f
  3127.     cmpi.b    #KRPT,arwd_krcnt-zsv_work(a6)
  3128.     bcs    2f
  3129.     bset.b    #0,arwd_k-zsv_work(a6)
  3130. @@:
  3131.     addq.w    #1,disp_start-zsv_work(a6)
  3132.     bsr    init_track_data_d
  3133.     move.w    #$00_ff,arwd_krcnt-zsv_work(a6)    *st.b    arwd_krwork-zsv_work(a6)
  3134.     bsr    clr_track_area_d
  3135.     bra    main_lp
  3136. 2:
  3137.     bsr    arwd_krc_ope
  3138.     bra    __roll_u
  3139. 1:
  3140.     move.l    #$ff,arwd_k-zsv_work(a6)    *arwd_krcnt=0,arwd_krwork=$ff
  3141. __roll_u:                *ROLL UP
  3142.     bitsns    $7
  3143.     btst.l    #1,d0            *[ROLL.UP]
  3144.     beq    1f
  3145.     tst.w    disp_start-zsv_work(a6)
  3146.     beq    __mask
  3147.     tas.b    rlu_k-zsv_work(a6)
  3148.     beq    @f
  3149.     btst.b    #0,rlu_k-zsv_work(a6)
  3150.     bne    @f
  3151.     cmpi.b    #KRPT,rlu_krcnt-zsv_work(a6)
  3152.     bcs    2f
  3153.     bset.b    #0,rlu_k-zsv_work(a6)
  3154. @@:
  3155.     cmp.w    #10,disp_start-zsv_work(a6)
  3156.     bcc    @f
  3157.     move.w    #10,disp_start-zsv_work(a6)
  3158. @@:
  3159.     sub.w    #10,disp_start-zsv_work(a6)
  3160.     bsr    init_track_data
  3161.     move.w    #$00_ff,rlu_krcnt-zsv_work(a6)    *st.b    rlu_krwork-zsv_work(a6)
  3162.     bra    main_lp
  3163. 2:
  3164.     bsr    rlu_krc_ope
  3165.     bra    __roll_d
  3166. 1:
  3167.     move.l    #$ff,rlu_k-zsv_work(a6)        *rlu_krcnt=0,rlu_krwork=$ff
  3168. __roll_d:
  3169.     bitsns    $7
  3170.     btst.l    #0,d0            *[ROLL.DOWN]
  3171.     beq    1f
  3172.     cmp.w    #tr_max-10,disp_start-zsv_work(a6)
  3173.     beq    __mask
  3174.     tas.b    rld_k-zsv_work(a6)
  3175.     beq    @f
  3176.     btst.b    #0,rld_k-zsv_work(a6)
  3177.     bne    @f
  3178.     cmpi.b    #KRPT,rld_krcnt-zsv_work(a6)
  3179.     bcs    2f
  3180.     bset.b    #0,rld_k-zsv_work(a6)
  3181. @@:
  3182.     cmp.w    #tr_max-20,disp_start-zsv_work(a6)
  3183.     bcs    @f
  3184.     move.w    #tr_max-20,disp_start-zsv_work(a6)
  3185. @@:
  3186.     add.w    #10,disp_start-zsv_work(a6)
  3187.     bsr    init_track_data
  3188.     move.w    #$00_ff,rld_krcnt-zsv_work(a6)    *st.b    rld_krwork-zsv_work(a6)
  3189.     bra    main_lp
  3190. 2:
  3191.     bsr    rld_krc_ope
  3192.     bra    __mask
  3193. 1:
  3194.     move.l    #$ff,rld_k-zsv_work(a6)        *rld_krcnt=0,rld_krwork=$ff
  3195. __mask:                    *[F1]~[F5]
  3196.     move.w    disp_start(pc),d3
  3197.     moveq.l    #3,d2
  3198. 1:
  3199.     bitsns    $c
  3200.     btst.l    d2,d0
  3201.     beq    @f
  3202.     bset.b    d2,mask_k-zsv_work(a6)
  3203.     bne    2f
  3204.     lea    trk_seq_tbl+6(pc),a1
  3205.     move.l    #$0001_ffff,-(a1)
  3206.     move.w    d3,-(a1)
  3207.     Z_MUSIC    #ZM_MASK_TRACKS
  3208.     bra    2f
  3209. @@:
  3210.     bclr.b    d2,mask_k-zsv_work(a6)
  3211. 2:
  3212.     addq.w    #1,d3
  3213.     addq.w    #1,d2
  3214.     cmpi.b    #7,d2
  3215.     bls    1b
  3216. __mask2:                *[F6]~[F10]
  3217.     moveq.l    #0,d2
  3218. 1:
  3219.     bitsns    $d
  3220.     btst.l    d2,d0
  3221.     beq    @f
  3222.     bset.b    d2,mask2_k-zsv_work(a6)
  3223.     bne    2f
  3224.     lea    trk_seq_tbl+6(pc),a1
  3225.     move.l    #$0001_ffff,-(a1)
  3226.     move.w    d3,-(a1)
  3227.     Z_MUSIC    #ZM_MASK_TRACKS
  3228.     bra    2f
  3229. @@:
  3230.     bclr.b    d2,mask2_k-zsv_work(a6)
  3231. 2:
  3232.     addq.w    #1,d3
  3233.     addq.w    #1,d2
  3234.     cmpi.b    #4,d2
  3235.     bls    1b
  3236. __fm_mask:                *[F]
  3237.     bitsns    $4
  3238.     btst.l    #1,d0
  3239.     beq    1f
  3240.     tas    fmmsk_k-zsv_work(a6)
  3241.     bne    __ad_mask
  3242.     move.l    _seq_wk_tbl(pc),a2    *a2=track work addr
  3243.     movea.l    _play_trk_tbl(pc),a4
  3244. @@:
  3245.     move.w    (a4)+,d0        *演奏されているのかチェック
  3246.     cmpi.w    #-1,d0
  3247.     beq    __ad_mask
  3248.     move.w    d0,d1
  3249.     mulu    _wk_size(pc),d0
  3250.     tst.w    p_type(a2,d0.l)
  3251.     bne    @b
  3252.     lea    trk_seq_tbl+6(pc),a1
  3253.     move.l    #$0001_ffff,-(a1)
  3254.     move.w    d1,-(a1)
  3255.     Z_MUSIC    #ZM_MASK_TRACKS
  3256.     bra    @b
  3257. 1:
  3258.     clr.b    fmmsk_k-zsv_work(a6)
  3259. __ad_mask:                *[9]
  3260.     bitsns    $8
  3261.     btst.l    #5,d0
  3262.     beq    1f
  3263.     tas    admsk_k-zsv_work(a6)
  3264.     bne    __md_mask
  3265.     move.l    _seq_wk_tbl(pc),a2    *a2=track work addr
  3266.     movea.l    _play_trk_tbl(pc),a4
  3267. @@:
  3268.     move.w    (a4)+,d0        *演奏されているのかチェック
  3269.     cmpi.w    #-1,d0
  3270.     beq    __md_mask
  3271.     move.w    d0,d1
  3272.     mulu    _wk_size(pc),d0
  3273.     cmpi.w    #1,p_type(a2,d0.l)
  3274.     bne    @b
  3275.     lea    trk_seq_tbl+6(pc),a1
  3276.     move.l    #$0001_ffff,-(a1)
  3277.     move.w    d1,-(a1)
  3278.     Z_MUSIC    #ZM_MASK_TRACKS
  3279.     bra    @b
  3280. 1:
  3281.     clr.b    admsk_k-zsv_work(a6)
  3282. __md_mask:
  3283.     bitsns    $0e
  3284.     btst.l    #3,d0            *[OPT.2]がONなら無視
  3285.     bne    __k_ctrl
  3286.     bitsns    $8
  3287.     move.b    d0,d5
  3288.     andi.w    #%0100_0000,d5
  3289.     andi.w    #%0000_0111,d0
  3290.     lsr.w    #3,d5
  3291.     or.b    d0,d5
  3292.     lea    mdmsk_k(pc),a3
  3293.     moveq.l    #4-1,d2
  3294.     move.w    #$8003,d3
  3295. __mdmsk_lp:                *[/][*][-][+]
  3296.     btst.l    d2,d5
  3297.     beq    1f
  3298.     tas    (a3)+
  3299.     bne    next_mdmsk
  3300.     move.l    _seq_wk_tbl(pc),a2    *a2=track work addr
  3301.     movea.l    _play_trk_tbl(pc),a4
  3302. @@:
  3303.     move.w    (a4)+,d0        *演奏されているのかチェック
  3304.     cmpi.w    #-1,d0
  3305.     beq    next_mdmsk
  3306.     move.w    d0,d1
  3307.     mulu    _wk_size(pc),d0
  3308.     cmp.w    p_type(a2,d0.l),d3
  3309.     bne    @b
  3310.     lea    trk_seq_tbl+6(pc),a1
  3311.     move.l    #$0001_ffff,-(a1)
  3312.     move.w    d1,-(a1)
  3313.     Z_MUSIC    #ZM_MASK_TRACKS
  3314.     bra    @b
  3315. 1:
  3316.     clr.b    (a3)+
  3317. next_mdmsk:
  3318.     subq.w    #1,d3
  3319.     dbra    d2,__mdmsk_lp
  3320. ********************************演奏制御系キーコントロール
  3321. __k_ctrl:
  3322.     move.l    _zmusic_stat(pc),a0
  3323.     tst.b    external_applications(a0)
  3324.     bmi    __esc        *ZP -Dが組み込まれていた場合
  3325.  
  3326.     lea    key_tbl_db(pc),a0
  3327.     lea    $800.w,a1
  3328.  
  3329.     bsr    key_inp
  3330.     beq    @f
  3331.     bsr    _PLAY        *演奏開始(xf4)
  3332.     bra    __esc
  3333. @@:
  3334.     clr.b    play_k-zsv_work(a6)
  3335.  
  3336.     bsr    key_inp
  3337.     beq    @f
  3338.     bsr    _PAUSE        *一時停止(opt1)
  3339.     bra    __esc
  3340. @@:
  3341.     clr.b    stop_k-zsv_work(a6)
  3342.  
  3343.     bsr    key_inp
  3344.     beq    @f
  3345.     bsr    _CONT        *一時停止解除(opt2)
  3346.     bra    __esc
  3347. @@:
  3348.     clr.b    cont_k-zsv_work(a6)
  3349.  
  3350.     bsr    key_inp
  3351.     beq    @f
  3352.     bsr    _FF        *早送り(xf5)
  3353.     bra    __esc
  3354. @@:
  3355.     bsr    key_inp
  3356.     beq    @f
  3357.     bsr    _SLOW        *低速演奏
  3358.     bra    __esc
  3359. @@:
  3360.     bsr    key_inp        *FADEOUT(xf1)
  3361.     beq    @f
  3362.     bsr    _FADEOUT
  3363.     bra    __esc
  3364. @@:
  3365.     clr.b    fadeout_k-zsv_work(a6)
  3366.  
  3367.     bsr    key_inp        *FADE IN(xf2)
  3368.     beq    @f
  3369.     bsr    _FADE_IN
  3370.     bra    __esc
  3371. @@:
  3372.     clr.b    fadein_k-zsv_work(a6)
  3373. chk_FF:
  3374.     tst.b    _FF_flg-zsv_work(a6)    *早送り終了か?
  3375.     beq    chk_SLOW
  3376.     lea    trk_seq_tbl(pc),a1
  3377.     move.l    #$ffff_07_00+fader_dflt_spd,(a1)    *dev,omt,spd.h
  3378.     move.l    #$00_80_80_00,4(a1)            *spd.l,start,end,dummy
  3379.     Z_MUSIC    #ZM_MASTER_FADER
  3380.     clr.b    _FF_flg-zsv_work(a6)
  3381.     bra    @f
  3382. chk_SLOW:
  3383.     tst.b    _SLOW_flg-zsv_work(a6)    *低速演奏か?
  3384.     beq    __esc
  3385. @@:
  3386.     moveq.l    #0,d1
  3387.     Z_MUSIC    #ZM_CONTROL_TEMPO    *通常テンポに戻す
  3388.     clr.b    _SLOW_flg-zsv_work(a6)
  3389. __esc:
  3390.     bitsns    $7
  3391.     btst.l    #2,d0        *[UNDO]
  3392.     bne    all_end
  3393.     bitsns    $0
  3394.     btst.l    #1,d0        *[ESC]が押されたかどうか
  3395.     bne    all_end
  3396.     bra    main_lp
  3397.  
  3398. krc_ope    macro    XX,YY
  3399.     * x d0
  3400.     move.b    $e88001,d0
  3401. *    andi.b    #$80,d0            *h_w
  3402.     andi.b    #$10,d0            *v_w
  3403.     cmp.b    XX(pc),d0    *キーリピート処理
  3404.     beq    @f
  3405.     move.b    d0,XX-zsv_work(a6)
  3406.     addq.b    #1,YY-zsv_work(a6)
  3407. @@:
  3408.     rts
  3409.     endm
  3410.  
  3411. arwu_krc_ope:    krc_ope    arwu_krwork,arwu_krcnt
  3412. arwd_krc_ope:    krc_ope    arwd_krwork,arwd_krcnt
  3413. rlu_krc_ope:    krc_ope    rlu_krwork,rlu_krcnt
  3414. rld_krc_ope:    krc_ope    rld_krwork,rld_krcnt
  3415.  
  3416. key_inp:            *キー入力
  3417.     * > nz key on
  3418.     * > ze key off
  3419.     move.b    (a0)+,d0    *key group
  3420.     move.b    d0,d1
  3421.     andi.w    #$0f,d0
  3422.     lsr.b    #4,d1        *key status bit
  3423.     btst.b    d1,(a1,d0.w)
  3424.     beq    @f
  3425.     move.b    (a0)+,d0    *key group
  3426.     move.b    d0,d1
  3427.     andi.w    #$0f,d0
  3428.     lsr.b    #4,d1        *key status bit
  3429.     btst.b    d1,(a1,d0.w)
  3430.     rts
  3431. @@:
  3432.     addq.w    #1,a0
  3433.     moveq.l    #0,d0
  3434.     rts
  3435.  
  3436. _PAUSE:                *一時停止
  3437.     tas.b    stop_k-zsv_work(a6)
  3438.     bmi    @f
  3439.     tas.b    stop_mode-zsv_work(a6)
  3440.     bmi    do_cont
  3441.     suba.l    a1,a1
  3442.     Z_MUSIC    #ZM_STOP
  3443. @@:
  3444.     rts
  3445.  
  3446. _CONT:                *一時停止解除
  3447.     tas.b    cont_k-zsv_work(a6)
  3448.     bmi    @f
  3449. *    tst.b    stop_mode-zsv_work(a6)
  3450. *    beq    @f        *演奏は停止していない
  3451. do_cont:
  3452.     suba.l    a1,a1
  3453.     Z_MUSIC    #ZM_CONT
  3454.     clr.b    stop_mode-zsv_work(a6)
  3455. @@:
  3456.     rts
  3457.  
  3458. _PLAY:                *演奏開始
  3459. reglist    reg    d0-d1/a1-a2
  3460.     tas.b    play_k-zsv_work(a6)
  3461.     bmi    1f
  3462.     movem.l    reglist,-(sp)
  3463.     Z_MUSIC    #ZM_PLAY2
  3464.     clr.b    stop_mode-zsv_work(a6)
  3465.     lea    global_data(pc),a1
  3466.     lea    mstrfdr_ofs(pc),a2
  3467.     moveq.l    #if_max+2-1,d1
  3468. @@:
  3469.     move.w    (a2)+,d0
  3470.     clr.b    (a1,d0.w)                *チェックビットクリア(master_fader)
  3471.     dbra    d1,@b
  3472.     bsr    draw_mixbar_scale
  3473.     movem.l    (sp)+,reglist
  3474. 1:
  3475.     rts
  3476.  
  3477. _FADE_IN:
  3478.     tas.b    fadein_k-zsv_work(a6)
  3479.     bmi    @f
  3480.     lea    trk_seq_tbl(pc),a1
  3481.     move.l    #$ffff_07_00,d0            *dev,omt,(spd.h)
  3482.     move.b    fadein_speed(pc),d0        *spd.h
  3483.     move.l    d0,(a1)                *dev,omt,spd.h
  3484.     move.l    #$00_00_80_00,4(a1)        *(spd.l),start,end,dummy
  3485.     move.b    fadein_speed+1(pc),4(a1)    *spd.l
  3486.     Z_MUSIC    #ZM_MASTER_FADER
  3487. @@:
  3488.     rts
  3489.  
  3490. _FADEOUT:
  3491.     tas.b    fadeout_k-zsv_work(a6)
  3492.     bmi    @f
  3493.     lea    trk_seq_tbl(pc),a1
  3494.     move.l    #$ffff_07_00,d0            *dev,omt,spd.h
  3495.     move.b    fadeout_speed(pc),d0        *(spd.h)
  3496.     move.l    d0,(a1)                *dev,omt,spd.h
  3497.     move.l    #$00_80_00_00,4(a1)        *(spd.l),start,end,dummy
  3498.     move.b    fadeout_speed+1(pc),4(a1)    *spd.l
  3499.     Z_MUSIC    #ZM_MASTER_FADER
  3500. @@:
  3501.     rts
  3502.  
  3503. _FF:                *早送り
  3504.     tst.b    _SLOW_flg-zsv_work(a6)            *低速演奏か?
  3505.     bne    @f
  3506.     tas.b    _FF_flg-zsv_work(a6)
  3507.     bne    @f
  3508.     lea    trk_seq_tbl(pc),a1
  3509.     move.l    #$ffff_07_00+fader_dflt_spd,(a1)    *dev,omt,spd.h
  3510.     move.l    #$00_40_40_00,4(a1)            *spd.l,start,end,dummy
  3511.     Z_MUSIC    #ZM_MASTER_FADER
  3512.     moveq.l    #-1,d1
  3513.     Z_MUSIC    #ZM_CONTROL_TEMPO
  3514.     move.l    FF_timer(pc),d1                *M:$c0,B:$f8,A:$399
  3515.     Z_MUSIC    #ZM_SET_TIMER_VALUE
  3516. @@:
  3517.     rts
  3518.  
  3519. _SLOW:                    *低速演奏
  3520.     tst.b    _FF_flg-zsv_work(a6)    *早送り終了か?
  3521.     bne    @f
  3522.     tas.b    _SLOW_flg-zsv_work(a6)
  3523.     bne    @f
  3524.     moveq.l    #-1,d1
  3525.     Z_MUSIC    #ZM_CONTROL_TEMPO
  3526.     move.l    SL_timer(pc),d1
  3527.     Z_MUSIC    #ZM_SET_TIMER_VALUE
  3528. @@:
  3529.     rts
  3530.  
  3531. ch_odr_no:            *チャンネルフェーダーテーブル用オーダー値取りだし
  3532.     * < d0.hw=type,d0.lw=ch
  3533.     * > d3.w=チャンネルフェーダーテーブル用オーダー値
  3534.     move.w    p_type(a5),d0
  3535.     tst.w    d0
  3536.     beq    con_fm
  3537.     bmi    con_midi
  3538.                 *ADPCM
  3539.     moveq.l    #16,d3
  3540.     add.w    d4,d3
  3541.     rts
  3542. con_fm:                *FM
  3543.     move.w    d4,d3
  3544.     rts
  3545. con_midi:            *MIDI
  3546.     moveq.l    #32,d3
  3547.     lsl.w    #4,d0        *16倍
  3548.     add.w    d0,d3
  3549.     add.w    d4,d3
  3550.     rts
  3551.  
  3552. do_scroll:
  3553.     movem.l    d0-d3,-(sp)
  3554.     moveq.l    #8,d1
  3555.     move.w    scr_x-zsv_work(a6),d2
  3556.     move.w    scr_y-zsv_work(a6),d3
  3557.     IOCS    _SCROLL
  3558.     movem.l    (sp)+,d0-d3
  3559.     rts
  3560.  
  3561. *clr_track_area:                *トラック情報エリアの全消去
  3562. *    movem.l    d0-d1/a0,-(sp)
  3563. *    move.w    $e8002a,-(sp)
  3564. *    move.w    #$01_00+paletf0,$e8002a        *同時アクセス
  3565. *
  3566. *    lea    $e00000+$80*16,a0
  3567. *    move.w    #(trn)*16-1,d0
  3568. *1:
  3569. *    moveq.l    #24-1,d1
  3570. *2:
  3571. *    clr.l    (a0)+
  3572. *    dbra    d1,2b
  3573. *    lea    32(a0),a0
  3574. *    dbra    d0,1b
  3575. *    move.w    (sp)+,$e8002a            *同時アクセス解除
  3576. *    movem.l    (sp)+,d0-d1/a0
  3577. *    rts
  3578.  
  3579. clr_track_area_u:                *トラック情報エリアの消去
  3580.     * < d0.l=表示トラック番号(0-9)
  3581.     movem.l    d0-d1/a1,-(sp)
  3582. @@:
  3583.     btst.b    #4,$e88001        *非表示期間を狙う
  3584.     bne    @b
  3585.     move.w    $e8002a,-(sp)
  3586.     move.w    #$00_0f,$e8002a
  3587.     move.w    #$77_83,d0
  3588.     moveq    #6*9*2-1,d1
  3589. @@:
  3590.     move.w    sr,-(sp)
  3591.     ori.w    #$0700,sr
  3592.     bsr    h_wait
  3593.     move.w    d0,$e8002c
  3594.     bset.b    #3,$e80481
  3595.     move.w    (sp)+,sr
  3596.     sub.w    #$01_01,d0
  3597.     dbra    d1,@b
  3598.  
  3599.     move.w    sr,-(sp)
  3600.     ori.w    #$0700,sr
  3601.     bsr    h_wait
  3602.     bclr.b    #3,$e80481
  3603.     move.w    (sp)+,sr
  3604.  
  3605.     move.w    #$01_00+paletf0,$e8002a
  3606.     draw    0,6
  3607.     move.w    #8*6-1,d1
  3608. ctalp00_u:
  3609.     moveq.l    #96/4-1,d0
  3610. @@:
  3611.     clr.l    (a1)+
  3612.     dbra    d0,@b
  3613.     add.w    #$80-96,a1
  3614.     dbra    d1,ctalp00_u
  3615.  
  3616.     move.w    (sp)+,$e8002a
  3617.     movem.l    (sp)+,d0-d1/a1
  3618.     rts
  3619.  
  3620. clr_track_area_d:                *トラック情報エリアの消去
  3621.     * < d0.l=表示トラック番号(0-9)
  3622. @@:
  3623.     btst.b    #4,$e88001        *非表示期間を狙う
  3624.     bne    @b
  3625.     movem.l    d0-d1/a1,-(sp)
  3626.     move.w    $e8002a,-(sp)
  3627.     move.w    #$00_0f,$e8002a
  3628.     move.w    #$18_0c,d0
  3629.     moveq    #6*9*2-1,d1
  3630. @@:
  3631.     move.w    sr,-(sp)
  3632.     ori.w    #$0700,sr
  3633.     bsr    h_wait
  3634.     move.w    d0,$e8002c
  3635.     bset.b    #3,$e80481
  3636.     move.w    (sp)+,sr
  3637.     add.w    #$01_01,d0
  3638.     dbra    d1,@b
  3639.  
  3640.     move.w    sr,-(sp)
  3641.     ori.w    #$0700,sr
  3642.     bsr    h_wait
  3643.     bclr.b    #3,$e80481
  3644.     move.w    (sp)+,sr
  3645.  
  3646.     move.w    #$01_00+paletf0,$e8002a
  3647.     draw    0,60
  3648.     move.w    #8*6-1,d1
  3649. ctalp00_d:
  3650.     moveq.l    #96/4-1,d0
  3651. @@:
  3652.     clr.l    (a1)+
  3653.     dbra    d0,@b
  3654.     add.w    #$80-96,a1
  3655.     dbra    d1,ctalp00_d
  3656.  
  3657.     move.w    (sp)+,$e8002a
  3658.     movem.l    (sp)+,d0-d1/a1
  3659.     rts
  3660.  
  3661. h_wait:
  3662.     tst.b    $e88001
  3663.     bpl    h_wait
  3664. @@:
  3665.     tst.b    $e88001
  3666.     bmi    @b
  3667.     rts
  3668.  
  3669. copy_plane1:                *ノンアクティヴ→アクティヴ
  3670.     move.w    $e8002a,-(sp)
  3671.     move.l    base_tadr(pc),a1
  3672.     moveq.l    #8*6-1,d3
  3673. y_cpylp00:
  3674.     moveq.l    #96-1,d2
  3675. y_cpylp01:                *%1010→%0011(%0010),%0001→%0100
  3676.     cmp.w    #8*5,d3            *コピー対象外エリア定義
  3677.     bls    @f
  3678.     cmp.w    #96-32,d2
  3679.     bhi    next_y_cpylp01
  3680. @@:
  3681.     cmp.w    #8*4,d3
  3682.     bhi    @f
  3683.     cmp.w    #8*2,d3
  3684.     bls    @f
  3685.     cmp.w    #1,d2
  3686.     bls    next_y_cpylp01
  3687.     cmp.w    #46,d2
  3688.     bls    @f
  3689.     cmp.w    #49,d2
  3690.     bls    next_y_cpylp01
  3691. @@:
  3692.     cmp.w    #8*2,d3
  3693.     bhi    @f
  3694.     tst.w    d2
  3695.     beq    next_y_cpylp01
  3696.     cmp.w    #47,d2
  3697.     bls    @f
  3698.     cmp.w    #49,d2
  3699.     bls    next_y_cpylp01
  3700. @@:
  3701.     clr.w    $e8002a
  3702. *    move.b    (a1),d1            *kon
  3703.     clr.b    (a1)
  3704.     add.l    #$2_0000,a1
  3705.     move.b    (a1),d0
  3706.     add.l    #$2_0000*2,a1
  3707.     clr.b    (a1)
  3708.     sub.l    #$2_0000,a1
  3709. *    move.b    d1,(a1)
  3710.     sub.l    #$2_0000*2,a1
  3711.     move.w    palet_tbl(pc),d1
  3712.     ori.w    #$01_00,d1
  3713.     move.w    d1,$e8002a
  3714.     move.b    d0,(a1)
  3715. next_y_cpylp01:
  3716.     addq.w    #1,a1
  3717.     dbra    d2,y_cpylp01
  3718.     add.w    #$80-96,a1
  3719.     dbra    d3,y_cpylp00
  3720.     move.w    (sp)+,$e8002a
  3721.     rts
  3722.  
  3723. copy_plane2:                *アクティヴ→ノンアクティヴ
  3724.     move.l    base_tadr(pc),a1
  3725.     lea    95+$80*5*8+$80*7(a1),a3
  3726.     moveq.l    #15,d2
  3727. @@:
  3728.     bsr    draw_release
  3729.     dbra    d2,@b
  3730.     move.w    $e8002a,-(sp)
  3731.     moveq.l    #8*6-1,d3
  3732. y_cpylp10:
  3733.     moveq.l    #96-1,d2
  3734. y_cpylp11:                *%0011(%0010)→%1010,%0100→%0001
  3735.     cmp.w    #8*5,d3            *コピー対象外エリア定義
  3736.     bls    @f
  3737.     cmp.w    #96-32,d2
  3738.     bhi    next_y_cpylp11
  3739. @@:
  3740.     cmp.w    #8*4,d3
  3741.     bhi    @f
  3742.     cmp.w    #8*2,d3
  3743.     bls    @f
  3744.     cmp.w    #1,d2
  3745.     bls    next_y_cpylp11
  3746.     cmp.w    #46,d2
  3747.     bls    @f
  3748.     cmp.w    #49,d2
  3749.     bls    next_y_cpylp11
  3750. @@:
  3751.     cmp.w    #8*2,d3
  3752.     bhi    @f
  3753.     tst.w    d2
  3754.     beq    next_y_cpylp11
  3755.     cmp.w    #47,d2
  3756.     bls    @f
  3757.     cmp.w    #49,d2
  3758.     bls    next_y_cpylp11
  3759. @@:
  3760.     clr.w    $e8002a
  3761.     clr.b    (a1)
  3762.     add.l    #$2_0000,a1
  3763.     move.b    (a1),d0
  3764.     add.l    #$2_0000,a1
  3765. *    move.b    (a1),d1            *kon
  3766.     clr.b    (a1)
  3767.     sub.l    #$2_0000*2,a1
  3768. *    move.b    d1,(a1)
  3769.     move.w    #$01_00+paleta0,$e8002a
  3770.     move.b    d0,(a1)
  3771. next_y_cpylp11:
  3772.     addq.w    #1,a1
  3773.     dbra    d2,y_cpylp11
  3774.     add.w    #$80-96,a1
  3775.     dbra    d3,y_cpylp10
  3776.     move.w    (sp)+,$e8002a
  3777.     rts
  3778.  
  3779. no_disp_case:                *非表示トラック
  3780.     lea    no_disp_tbl(pc),a1
  3781.     tas    (a1,d6.w)        *すでに表示したことがある
  3782.     bne    next_dsptrkprms
  3783.     move.w    #paleta0,palet_tbl-zsv_work(a6)
  3784.     pea    next_dsptrkprms(pc)
  3785.  
  3786. do_draw_trkprms:            *パラメータタイトル表示
  3787.     move.l    base_tadr(pc),a1    *消去
  3788.     move.w    $e8002a,-(sp)
  3789.     move.w    #$01_00+paletf0,$e8002a
  3790.     move.w    #8*6-1,d1
  3791. ddtlp:
  3792.     moveq.l    #96/4-1,d0
  3793. @@:
  3794.     clr.l    (a1)+
  3795.     dbra    d0,@b
  3796.     add.w    #$80-96,a1
  3797.     dbra    d1,ddtlp
  3798.     move.w    (sp)+,$e8002a
  3799.  
  3800.     move.l    base_tadr(pc),a1
  3801.     move.w    palet_tbl(pc),d1
  3802.     bsr    draw_trkprms
  3803.     move.l    d7,d0
  3804.     addq.w    #1,d0
  3805.     bsr    num_to_str
  3806.     lea    suji+5(pc),a2
  3807.     move.w    #palet50,d1        *palet_tbl(pc),d1
  3808.     bsr    cgwr
  3809.     lea    colon(pc),a2
  3810.     addq.w    #5,a1
  3811.     move.w    palet_tbl+2(pc),d1
  3812.     bsr    cgwr
  3813.     add.w    #11,a1
  3814.     lea    Status(pc),a2
  3815.     bsr    cgwr
  3816.     add.w    #$80*8-16,a1
  3817.     lea    Timbre(pc),a2
  3818.     move.w    palet_tbl(pc),d1
  3819.     bsr    cgwr
  3820.     lea    $80*1*8+46(a1),a1
  3821.     bsr    draw_mixbar_scale3
  3822.     addq.w    #1,a1
  3823.     bsr    draw_mixbar_scale3
  3824.     addq.w    #1,a1
  3825.     bsr    draw_mixbar_scale2
  3826.     lea    44(a1),a1
  3827.     bsr    draw_pan_scale
  3828.     addq.w    #2,a1
  3829.     bsr    draw_hold_scale
  3830.     addq.w    #1,a1
  3831.     bsr    draw_mixbar_scale2
  3832.     add.w    #$80*16,a1
  3833.     bra    draw_level_scale
  3834.  
  3835. draw_key:            *鍵盤描画
  3836.     * < d0.w=note num
  3837.     movem.l    d0-d1/a0/a3,-(sp)
  3838.     move.w    $e8002a,-(sp)
  3839.     clr.w    $e8002a            *アクセスモード設定
  3840.     lsl.w    #2,d0
  3841.     lea    kon_ptn1(pc),a0
  3842.     add.w    d0,a0
  3843.     move.w    (a0)+,d0        *offset
  3844.     lea    48(a1,d0.w),a3        *48=offset,a3.l=表示開始アドレス
  3845.     moveq.l    #10-1,d1
  3846. @@:                    *鍵盤の上部分表示
  3847.     move.b    (a0),d0
  3848.     or.b    d0,(a3)+
  3849.     move.b    1(a0),d0
  3850.     or.b    d0,(a3)+
  3851.     add.w    #$80-2,a3
  3852.     dbra    d1,@b
  3853.  
  3854.     lea    (kon_ptn2-kon_ptn1)-2(a0),a0
  3855.     move.w    (a0)+,d0        *offset
  3856.     bmi    exit_drwky
  3857.     lea    48(a1,d0.w),a3        *48=offset,a3.l=表示開始アドレス
  3858.     add.w    #$80*10,a3
  3859.     moveq.l    #5-1,d1
  3860. @@:                    *鍵盤の下部分表示
  3861.     move.b    (a0),d0
  3862.     or.b    d0,(a3)+
  3863.     move.b    1(a0),d0
  3864.     or.b    d0,(a3)+
  3865.     add.w    #$80-2,a3
  3866.     dbra    d1,@b
  3867. exit_drwky:
  3868.     move.w    (sp)+,$e8002a
  3869.     movem.l    (sp)+,d0-d1/a0/a3
  3870.     rts
  3871.  
  3872. erase_key:            *鍵盤消去
  3873.     * < a1.l=plane addr.
  3874.     * < d0.w=note num
  3875.     movem.l    d0-d1/a0/a3,-(sp)
  3876.     move.w    $e8002a,-(sp)
  3877.     clr.w    $e8002a            *アクセスモード設定
  3878.     lsl.w    #2,d0
  3879.     lea    kon_ptn1(pc),a0
  3880.     add.w    d0,a0
  3881.     move.w    (a0)+,d0        *offset
  3882.     lea    48(a1,d0.w),a3        *48=offset,a3.l=表示開始アドレス
  3883.     moveq.l    #10-1,d1
  3884. @@:                    *鍵盤の上部分表示
  3885.     move.b    (a0),d0
  3886.     not.b    d0
  3887.     and.b    d0,(a3)+
  3888.     move.b    1(a0),d0
  3889.     not.b    d0
  3890.     and.b    d0,(a3)+
  3891.     add.w    #$80-2,a3
  3892.     dbra    d1,@b
  3893.  
  3894.     lea    (kon_ptn2-kon_ptn1)-2(a0),a0
  3895.     move.w    (a0)+,d0        *offset
  3896.     bmi    exit_ersky
  3897.     lea    48(a1,d0.w),a3        *48=offset,a3.l=表示開始アドレス
  3898.     add.w    #$80*10,a3
  3899.     moveq.l    #5-1,d1
  3900. @@:                    *鍵盤の下部分表示
  3901.     move.b    (a0),d0
  3902.     not.b    d0
  3903.     and.b    d0,(a3)+
  3904.     move.b    1(a0),d0
  3905.     not.b    d0
  3906.     and.b    d0,(a3)+
  3907.     add.w    #$80-2,a3
  3908.     dbra    d1,@b
  3909. exit_ersky:
  3910.     move.w    (sp)+,$e8002a
  3911.     movem.l    (sp)+,d0-d1/a0/a3
  3912.     rts
  3913.  
  3914. all_end:            *終了
  3915.     bsr    init
  3916.  
  3917.     clr.w    -(sp)
  3918.     move.w    #14,-(sp)
  3919.     DOS    _CONCTRL
  3920.     addq.w    #4,a7
  3921.  
  3922.     clr.w    -(sp)
  3923.     DOS    _KFLUSH
  3924.     addq.w    #2,sp
  3925.  
  3926.     move.l    ssp(pc),a1
  3927.     IOCS    _B_SUPER
  3928.     DOS    _EXIT
  3929.  
  3930. init:                    *画面初期化
  3931.     move.w    #$0010,d1
  3932.     IOCS    _CRTMOD
  3933.  
  3934.     move.b    #-$02,d1
  3935.     IOCS    _CONTRAST
  3936.     IOCS    _B_CURON
  3937.     moveq.l    #0,d1
  3938.     move.l    #$005f001e,d2
  3939.     IOCS    _B_CONSOL
  3940.     IOCS    _MS_CUROF
  3941.     moveq.l    #0,d1
  3942.     move.l    #$02ff01ff,d2
  3943.     IOCS    _MS_LIMIT
  3944.     moveq.l    #$ff,d1
  3945.     IOCS    _SKEY_MOD
  3946.     IOCS    _OS_CURON
  3947.     pea.l    init_color(pc)
  3948.     DOS    _PRINT
  3949.     addq.w    #4,a7
  3950. txt_cls:                    *テキスト画面の全プレーンクリア
  3951.     move.w    $e8002a,-(sp)
  3952.     move.w    #$01_00+paletf0,$e8002a        *同時アクセス
  3953.  
  3954.     lea    $e00000,a0
  3955.     move.w    #(trn+1)*16-1,d0
  3956. clr_loop0:
  3957.     moveq.l    #32-1,d1
  3958. clr_loop1:
  3959.     clr.l    (a0)+
  3960.     dbra    d1,clr_loop1
  3961. *    lea    32(a0),a0
  3962.     dbra    d0,clr_loop0
  3963.  
  3964.     move.w    (sp)+,$e8002a            *同時アクセス解除
  3965.     rts
  3966.  
  3967. chk_drv:            *デバイス名のcheck
  3968.     * > eq=no error
  3969.     * > mi=error
  3970.     move.l    $8c.w,a0
  3971.     subq.w    #8,a0
  3972.     cmpi.l    #'ZmuS',(a0)+
  3973.     bne    no_zmusic_error
  3974.     cmpi.w    #'iC',(a0)+
  3975.     bne    no_zmusic_error
  3976.     move.w    (a0),zm_ver-zsv_work(a6)
  3977.     cmpi.b    #$30,(a0)+
  3978.     bcs    version_error
  3979.     rts
  3980.  
  3981. set_mstrfdr_ofs:
  3982.     * < d2.w=counter
  3983. reglist    reg    d2/a1/a2/a4
  3984.     movem.l    reglist,-(sp)
  3985.     lea    global_data(pc),a1
  3986.     suba.l    a1,a4
  3987.     add.w    d2,d2
  3988.     lea    mstrfdr_ofs(pc),a2
  3989.     move.w    a4,(a2,d2.w)
  3990.     tst.w    d2
  3991.     bne    @f
  3992.     move.l    #NOP_NOP,mstfdrlp-zsv_work(a6)    *ラストのみ自己書き換え
  3993.     bsr    cache_flush
  3994. @@:
  3995.     movem.l    (sp)+,reglist
  3996.     rts
  3997.  
  3998. set_bank_ofs:
  3999. reglist    reg    a1/a4
  4000.     movem.l    reglist,-(sp)
  4001.     move.l    #NOP_NOP,sbo_patch-zsv_work(a6)    *一回目の実行時のみ自己書き換え
  4002.     lea    track_data(pc),a1
  4003.     suba.l    a1,a4
  4004.     move.w    a4,bank_ofs-zsv_work(a6)
  4005.     bsr    cache_flush
  4006.     movem.l    (sp)+,reglist
  4007.     rts
  4008.  
  4009. set_timbre_ofs:
  4010. reglist    reg    a1/a4
  4011.     movem.l    reglist,-(sp)
  4012.     move.l    #NOP_NOP,disp_timbre-zsv_work(a6)    *一回目の実行時のみ自己書き換え
  4013.     lea    track_data(pc),a1
  4014.     suba.l    a1,a4
  4015.     move.w    a4,timbre_ofs-zsv_work(a6)
  4016.     bsr    cache_flush
  4017.     movem.l    (sp)+,reglist
  4018.     rts
  4019.  
  4020. set_pan_ofs:
  4021. reglist    reg    a1/a4
  4022.     movem.l    reglist,-(sp)
  4023.     move.l    #NOP_NOP,pan_chk-zsv_work(a6)    *一回目の実行時のみ自己書き換え
  4024.     lea    track_data(pc),a1
  4025.     suba.l    a1,a4
  4026.     move.w    a4,pan_ofs-zsv_work(a6)
  4027.     bsr    cache_flush
  4028.     movem.l    (sp)+,reglist
  4029.     rts
  4030.  
  4031. set_vol_ofs:
  4032. reglist    reg    a1/a4
  4033.     movem.l    reglist,-(sp)
  4034.     move.l    #NOP_NOP,vol_chk-zsv_work(a6)    *一回目の実行時のみ自己書き換え
  4035.     lea    track_data(pc),a1
  4036.     suba.l    a1,a4
  4037.     move.w    a4,vol_ofs-zsv_work(a6)
  4038.     bsr    cache_flush
  4039.     movem.l    (sp)+,reglist
  4040.     rts
  4041.  
  4042. set_velo_ofs:
  4043. reglist    reg    a1/a4
  4044.     movem.l    reglist,-(sp)
  4045.     move.l    #NOP_NOP,disp_velo-zsv_work(a6)    *一回目の実行時のみ自己書き換え
  4046.     lea    track_data(pc),a1
  4047.     suba.l    a1,a4
  4048.     move.w    a4,velo_ofs-zsv_work(a6)
  4049.     bsr    cache_flush
  4050.     movem.l    (sp)+,reglist
  4051.     rts
  4052.  
  4053. clr_track_data:                *データ内容の初期化
  4054.     * < d7.l=現在の表示トラック
  4055.     * - all
  4056.     movem.l    d0/a1,-(sp)
  4057.     move.l    d7,d0
  4058.     sub.w    disp_start(pc),d0
  4059.     mulu    #dtsz,d0
  4060.     lea    track_data(pc),a1
  4061.     lea    4(a1,d0.l),a1
  4062.     move.w    #dtsz/4-1-1,d0
  4063. @@:
  4064.     clr.l    (a1)+
  4065.     dbra    d0,@b
  4066.     movem.l    (sp)+,d0/a1
  4067.     rts
  4068.  
  4069. init_track_data:
  4070.     movem.l    d0/a0,-(sp)
  4071.     lea    track_data(pc),a0    *ワーク初期化
  4072.     move.w    #(data_end-track_data)/4-1,d0
  4073. @@:
  4074.     clr.l    (a0)+
  4075.     dbra    d0,@b
  4076.     bsr    init_no_disp_tbl
  4077.     movem.l    (sp)+,d0/a0
  4078.     rts
  4079.  
  4080. init_no_disp_tbl:
  4081.     clr.l    no_disp_tbl+0-zsv_work(a6)
  4082.     clr.l    no_disp_tbl+4-zsv_work(a6)
  4083.     clr.w    no_disp_tbl+8-zsv_work(a6)
  4084.     rts
  4085.  
  4086. init_track_data_u:
  4087.     movem.l    d0/a0-a1,-(sp)
  4088.     lea    track_data+dtsz*9(pc),a0
  4089.     lea    track_data+dtsz*10(pc),a1
  4090.     move.w    #(dtsz*9)/4-1,d0
  4091. @@:
  4092.     move.l    -(a0),-(a1)
  4093.     dbra    d0,@b
  4094.  
  4095.     move.w    #dtsz/4-1,d0
  4096. @@:
  4097.     clr.l    -(a1)
  4098.     dbra    d0,@b
  4099.     bsr    init_no_disp_tbl
  4100.     movem.l    (sp)+,d0/a0-a1
  4101.     rts
  4102.  
  4103. init_track_data_d:
  4104.     movem.l    d0/a0-a1,-(sp)
  4105.     lea    track_data+dtsz*1(pc),a0
  4106.     lea    track_data+dtsz*0(pc),a1
  4107.     move.w    #(dtsz*9)/4-1,d0
  4108. @@:
  4109.     move.l    (a0)+,(a1)+
  4110.     dbra    d0,@b
  4111.  
  4112.     move.w    #dtsz/4-1,d0
  4113. @@:
  4114.     clr.l    (a1)+
  4115.     dbra    d0,@b
  4116.     bsr    init_no_disp_tbl
  4117.     movem.l    (sp)+,d0/a0-a1
  4118.     rts
  4119.  
  4120. kake:            *32ビット×32ビット=32ビット
  4121.     * < d0.l X d1.l
  4122.     * > d1.l
  4123.     * - d0-d4
  4124.     movem.l    d0/d2-d4,-(sp)
  4125.     move.l    d0,d2
  4126.     move.l    d1,d3
  4127.     swap    d2
  4128.     swap    d3
  4129.  
  4130.     move.w    d1,d4
  4131.     mulu    d0,d1
  4132.     mulu    d3,d0
  4133.     mulu    d2,d3
  4134.     mulu    d4,d2
  4135.     exg    d0,d3
  4136.  
  4137.     add.l    d3,d2
  4138.  
  4139.     move.w    d2,d3
  4140.     swap    d3
  4141.     clr.w    d3
  4142.  
  4143.     clr.w    d2
  4144.     addx.w    d3,d2
  4145.     swap    d2
  4146.  
  4147.     add.l    d3,d1
  4148.     addx.l    d2,d0
  4149.     movem.l    (sp)+,d0/d2-d4
  4150.     rts
  4151.  
  4152. wari:                *32ビット/32ビット=32ビット...32ビット
  4153.     * < d1.l/d2.l=d1.l ...d2.l
  4154.     cmpi.l    #$ffff,d2
  4155.     bls    divx        *16ビット以下の数値なら1命令で処理
  4156.     cmp.l    d1,d2
  4157.     beq    div01        *d1=d2商は1
  4158.     bls    div02        *1命令では無理なケース
  4159.  
  4160.     move.l    d1,d2        *商は0余りはd1.l
  4161.     moveq.l    #0,d1
  4162.     rts
  4163. div01:                *商は1余り0
  4164.     moveq.l    #1,d1
  4165.     moveq.l    #0,d2
  4166.     rts
  4167. div02:
  4168.     movem.l    d3-d5,-(sp)
  4169.     move.l    d2,d3
  4170.     clr.w    d3
  4171.     swap    d3
  4172.     addq.l    #1,d3
  4173.     move.l    d1,d4
  4174.     move.l    d2,d5
  4175.     move.l    d3,d2
  4176.     bsr    divx
  4177.     move.l    d5,d2
  4178.     divu    d3,d2
  4179.     divu    d2,d1
  4180.     andi.l    #$ffff,d1
  4181. div03:
  4182.     move.l    d5,d2
  4183.     move.l    d5,d3
  4184.     swap    d3
  4185.     mulu    d1,d2
  4186.     mulu    d1,d3
  4187.     swap    d3
  4188.     add.l    d3,d2
  4189.     sub.l    d4,d2
  4190.     bhi    div04
  4191.     neg.l    d2
  4192.     cmp.l    d2,d5
  4193.     bhi    div05
  4194.     addq.l    #1,d1
  4195.     bra    div03
  4196. div04:
  4197.     subq.l    #1,d1
  4198.     bra    div03
  4199. div05:
  4200.     movem.l    (sp)+,d3-d5
  4201.     rts
  4202. divx:
  4203.     movem.w    d1/d3,-(sp)
  4204.     clr.w    d1
  4205.     swap    d1
  4206.     divu    d2,d1
  4207.     move.w    d1,d3
  4208.     move.w    (sp)+,d1
  4209.     divu    d2,d1
  4210.     swap    d1
  4211.     moveq.l    #0,d2
  4212.     move.w    d1,d2
  4213.     move.w    d3,d1
  4214.     swap    d1
  4215.     move.w    (sp)+,d3
  4216.     rts
  4217.  
  4218. calc_gate:                *ゲートタイムの計算
  4219.     * < d1.l=step time
  4220.     * > d2.l=gate time
  4221.     * - d1
  4222.     moveq.l    #0,d2
  4223.     move.w    p_Q_gate(a5),d2
  4224.     bmi    @f            *case:@Q
  4225.     mulu    d1,d2
  4226.     beq    err_cg
  4227.     lsr.l    #8,d2            */256
  4228.     rts
  4229. @@:
  4230.     add.w    d1,d2
  4231.     bgt    exit_cg            *正常なケース
  4232. err_cg:                    *step-@Q<=0のケース/@Q=0のケース
  4233.     move.w    d1,d2
  4234. exit_cg:
  4235.     rts
  4236.  
  4237. skip_@v:                *値のスキップ
  4238.     * > d1=step
  4239.     tst.b    (a0)+
  4240.     bpl    @f
  4241.     addq.w    #1,a0
  4242. @@:
  4243.     rts
  4244.  
  4245. get_st:                    *ステップの取りだし
  4246.     * > d1=step
  4247.     moveq.l    #0,d1
  4248.     move.b    (a0)+,d1
  4249.     bpl    @f
  4250.     add.b    d1,d1            *最上位ビット殺す
  4251.     lsl.w    #7,d1
  4252.     move.b    (a0)+,d1        *get word step
  4253. @@:
  4254.     rts
  4255.  
  4256. get_st_gt:                *ステップ、ゲートの取りだし
  4257.     * > d1=step
  4258.     * > d2=gate
  4259.     moveq.l    #0,d1
  4260.     move.b    (a0)+,d1
  4261.     bpl    @f
  4262.     add.b    d1,d1            *最上位ビット殺す
  4263.     lsl.w    #7,d1
  4264.     move.b    (a0)+,d1        *get word step
  4265. @@:
  4266.     moveq.l    #0,d2
  4267.     move.b    (a0)+,d2
  4268.     bpl    exit_gsg        *0~127
  4269.     add.b    d2,d2            *最上位ビット殺す
  4270.     lsl.w    #7,d2
  4271.     move.b    (a0)+,d2        *get word gate
  4272. exit_gsg:
  4273.     rts
  4274.  
  4275. get_st_gt_vl:                *ステップ、ゲート、ベロシティの取りだし
  4276.     * > d1.l=step
  4277.     * > d2.l=gate
  4278.     * > d3.l=velocity param.(最上位bitが1の場合はデフォルト指定だった事を意味する)
  4279.     * x d0,d5
  4280.     moveq.l    #0,d1            *get step
  4281.     move.b    (a0)+,d1
  4282.     bpl    @f
  4283.     add.b    d1,d1            *最上位ビット殺す
  4284.     lsl.w    #7,d1
  4285.     move.b    (a0)+,d1        *get word step
  4286. @@:
  4287.  
  4288.  
  4289.     moveq.l    #0,d2            *get gate
  4290.     move.b    (a0)+,d2
  4291.     bpl    get_def_velo        *0~127
  4292.     add.b    d2,d2            *最上位ビット殺す
  4293.     lsl.w    #7,d2
  4294.     move.b    (a0)+,d2        *get word gate
  4295.     tst.w    d2
  4296.     bne    get_def_velo
  4297.     move.w    #TIE_GATE,d2
  4298. get_def_velo:                *ベロシティ取りだし部
  4299.     moveq.l    #0,d5
  4300.     move.b    p_velo(a5),d5
  4301. *aftc_on?:                *アフタータッチシーケンス?
  4302.     tst.b    p_aftc_sw(a5)
  4303.     beq    vseq_on?
  4304.     btst.b    #b_aftc_first,p_aftc_flg(a5)    *!3/26
  4305.     beq    vseq_on?            *!3/26
  4306.     tst.w    p_aftc_1st_dly(a5)    *始めにディレイがある時はdefault velocity
  4307.     bne    vseq_on?
  4308.     btst.b    #0,p_aftc_omt(a5)
  4309.     beq    vseq_on?
  4310.     tst.l    d4
  4311.     bmi    vseq_on?
  4312.  
  4313.  
  4314.  
  4315.  
  4316.  
  4317.  
  4318.  
  4319.  
  4320.  
  4321.  
  4322.  
  4323.  
  4324.  
  4325.  
  4326.  
  4327.  
  4328.  
  4329.  
  4330.     btst.b    #0,p_aftc_rltv(a5)
  4331.     beq    @f
  4332.     moveq.l    #0,d0
  4333.     move.b    p_aftc_tbl(a5),d0
  4334.     ori.w    #$8000,d0
  4335.     swap    d0            *相対マーク
  4336.     or.l    d0,d5            *d5.hwに相対値を持っていっておく
  4337.     bra    vseq_on?
  4338. @@:
  4339.     move.b    p_aftc_tbl(a5),d5
  4340. vseq_on?:                *エンハンスド・ベロシティ・シーケンス?
  4341.     tst.b    p_vseq_param+p_arcc_sw(a5)
  4342.     beq    get_velo
  4343.     btst.b    #b_arcc_first,p_vseq_param+p_arcc_flg(a5)    *!3/26
  4344.     beq    get_velo                    *!3/26
  4345.     lea    p_vseq_param(a5),a4    *エンハンスド・ベロシティ・シーケンス処理
  4346.  
  4347.  
  4348.  
  4349.     move.b    p_arcc_level(a4),d5
  4350.     ext.w    d5
  4351.     moveq.l    #0,d0
  4352.     move.b    p_arcc_origin(a4),d0    *SPECIAL ENHANCED VELOCITY SEQUENCEの場合
  4353.     add.w    d0,d5
  4354. get_velo:
  4355.     moveq.l    #0,d3
  4356.     move.b    (a0)+,d3
  4357.     bpl    1f            *直接指定のケース
  4358.     cmpi.b    #128,d3
  4359.     beq    @f            *デフォルト選択の場合
  4360.     sub.b    #192,d3            *相対ケース
  4361.     ext.w    d3
  4362.     add.w    d5,d3
  4363.     bra    2f
  4364. @@:
  4365.     move.w    d5,d3
  4366. 2:
  4367.     bset.l    #31,d3            *デフォルト選択/相対指定であるマーク
  4368.     reduce_vol    d3
  4369. 1:
  4370.     tst.l    d4
  4371.     bmi    2f
  4372.     tst.l    d5
  4373.     bpl    1f
  4374.     swap    d5
  4375.     tst.b    d5
  4376.     bpl    @f
  4377.     add.b    d5,d3
  4378.     bpl    1f
  4379.     clr.b    d3
  4380.     bra    1f
  4381. @@:
  4382.     add.b    d5,d3
  4383.     bpl    1f
  4384.     move.b    #127,d3            *わざと.b
  4385. 1:
  4386.  
  4387. 2:
  4388.     rts
  4389.  
  4390. make_note:                *ノートナンバーをノート記号へ変換
  4391.     * < d0.l=note num
  4392.     movem.l    d0-d1/a1,-(sp)
  4393.     lea    suji(pc),a1
  4394.     move.l    #'    ',(a1)
  4395.     clr.b    4(a1)
  4396.     divu    #12,d0
  4397.     moveq.l    #$2f,d1
  4398.     add.b    d1,d0
  4399.     cmp.b    d1,d0
  4400.     bhi    @f
  4401.     move.l    #$2d310000,2(a1)    *'-1',0,0
  4402.     bra    dnd0
  4403. @@:
  4404.     move.b    d0,2(a1)
  4405. dnd0:
  4406.     swap    d0
  4407.     add.w    d0,d0
  4408.     move.w    nn(pc,d0.w),(a1)
  4409.     movem.l    (sp)+,d0-d1/a1
  4410.     rts
  4411.  
  4412. nn:    dc.b    'C '
  4413.     dc.b    'C#'
  4414.     dc.b    'D '
  4415.     dc.b    'D#'
  4416.     dc.b    'E '
  4417.     dc.b    'F '
  4418.     dc.b    'F#'
  4419.     dc.b    'G '
  4420.     dc.b    'G#'
  4421.     dc.b    'A '
  4422.     dc.b    'A#'
  4423.     dc.b    'B '
  4424.  
  4425. get_hex:            *値→16進数文字列
  4426.     * < d0=data value
  4427.     * < a1=格納したいアドレス
  4428.     * > (a1)=ascii numbers
  4429.     * - all
  4430.     movem.l    d0-d1/a1,-(sp)
  4431.     lea    suji+2(pc),a1
  4432.     clr.b    (a1)
  4433.  
  4434.     move.b    d0,d1
  4435.     andi.b    #$0f,d1
  4436.     add.b    #$30,d1
  4437.     cmpi.b    #'9',d1
  4438.     bls    @f
  4439.     addq.b    #7,d1
  4440. @@:
  4441.     move.b    d1,-(a1)
  4442.     lsr.l    #4,d0
  4443.     move.b    d0,d1
  4444.     andi.b    #$0f,d1
  4445.     add.b    #$30,d1
  4446.     cmpi.b    #'9',d1
  4447.     bls    @f
  4448.     addq.b    #7,d1
  4449. @@:
  4450.     move.b    d1,-(a1)
  4451.     lsr.l    #4,d0
  4452.     movem.l    (sp)+,d0-d1/a1
  4453.     rts
  4454.  
  4455. get_hex32:            *値→16進数文字列(4bytes)
  4456.     * < d0=data value
  4457.     * > (suji)=ascii numbers
  4458.     * - all
  4459.     movem.l    d0-d1/d4/a1,-(sp)
  4460.     lea    suji+8(pc),a1
  4461.     clr.b    (a1)
  4462.     moveq.l    #8-1,d4
  4463. gh_lp32:
  4464.     move.b    d0,d1
  4465.     andi.b    #$0f,d1
  4466.     add.b    #$30,d1
  4467.     cmpi.b    #'9',d1
  4468.     bls    @f
  4469.     addq.b    #7,d1
  4470. @@:
  4471.     move.b    d1,-(a1)
  4472.     lsr.l    #4,d0
  4473.     dbra    d4,gh_lp32
  4474.     movem.l    (sp)+,d0-d1/d4/a1
  4475.     rts
  4476.  
  4477. num_to_str:    *レジスタの値を文字数列にする
  4478.     * < d0.l=value
  4479.     * > (suji)=ascii data
  4480.     * > d0.b=1文字目のキャラクタ(' ' or '-')
  4481.     * - all
  4482.     movem.l    d1-d5/a0-a1,-(sp)
  4483.     moveq.l    #' ',d5
  4484.     clr.b    d4
  4485.     tst.l    d0
  4486.     bpl    @f
  4487.     moveq.l    #'-',d5
  4488.     neg.l    d0
  4489. @@:
  4490.     lea    suji(pc),a0
  4491.     lea    exp_tbl(pc),a1
  4492.     moveq.l    #10-1,d1
  4493. 1:
  4494.     moveq.l    #0,d2
  4495.     move.l    (a1)+,d3
  4496. 2:
  4497.     sub.l    d3,d0
  4498.     bcs    @f
  4499.     addq.b    #1,d2
  4500.     bra    2b
  4501. @@:
  4502.     add.l    d3,d0
  4503.     move.b    d2,d3
  4504.     or.b    d4,d3
  4505.     bne    @f
  4506.     move.b    #'0',(a0)+    *' '
  4507.     bra    3f
  4508. @@:
  4509.     st    d4
  4510.     add.b    #'0',d2
  4511.     move.b    d2,(a0)+
  4512. 3:
  4513.     dbra    d1,1b
  4514.     tst.b    d4
  4515.     bne    @f
  4516.     move.b    #'0',-1(a0)
  4517. @@:
  4518.     clr.b    (a0)        *end flg
  4519.     move.l    d5,d0
  4520.     movem.l    (sp)+,d1-d5/a0-a1
  4521.     rts
  4522.  
  4523. num_to_str2:    *レジスタの値を文字数列にする
  4524.     * < d0.l=value
  4525.     * > (suji)=ascii data
  4526.     * > d0.b=1文字目のキャラクタ(' ' or '-')
  4527.     * - all
  4528.     movem.l    d1-d5/a0-a1,-(sp)
  4529.     moveq.l    #' ',d5
  4530.     clr.b    d4
  4531.     tst.l    d0
  4532.     bpl    @f
  4533.     moveq.l    #'-',d5
  4534.     neg.l    d0
  4535. @@:
  4536.     lea    suji(pc),a0
  4537.     lea    exp_tbl(pc),a1
  4538.     moveq.l    #10-1,d1
  4539. 1:
  4540.     moveq.l    #0,d2
  4541.     move.l    (a1)+,d3
  4542. 2:
  4543.     sub.l    d3,d0
  4544.     bcs    @f
  4545.     addq.b    #1,d2
  4546.     bra    2b
  4547. @@:
  4548.     add.l    d3,d0
  4549.     move.b    d2,d3
  4550.     or.b    d4,d3
  4551.     bne    @f
  4552.     move.b    #' ',(a0)+    *' '
  4553.     bra    3f
  4554. @@:
  4555.     st    d4
  4556.     add.b    #'0',d2
  4557.     move.b    d2,(a0)+
  4558. 3:
  4559.     dbra    d1,1b
  4560.     tst.b    d4
  4561.     bne    @f
  4562.     move.b    #'0',-1(a0)
  4563. @@:
  4564.     clr.b    (a0)        *end flg
  4565.     move.l    d5,d0
  4566.     movem.l    (sp)+,d1-d5/a0-a1
  4567.     rts
  4568.  
  4569. no_zmusic_error:        *ZMUSICがない。
  4570.     lea    z_err_mes(pc),a1
  4571.     bra    @f
  4572.  
  4573. file_not_found:            *ファイルが見つかりません
  4574.     lea    fnf_err_mes(pc),a1
  4575.     bra    @f
  4576.  
  4577. version_error:            *バージョン番号不一致
  4578.     lea    version_mes(pc),a1
  4579. @@:
  4580.     move.w    #2,-(sp)
  4581.     pea    (a1)
  4582.     DOS    _FPUTS
  4583.     addq.w    #6,sp
  4584.     move.l    ssp(pc),a1
  4585.     IOCS    _B_SUPER
  4586.     move.w    #1,-(sp)
  4587.     DOS    _EXIT2
  4588.  
  4589. out_of_memory:            *メモリ不足
  4590.     move.w    #2,-(sp)
  4591.     pea    mem_mes(pc)
  4592.     DOS    _FPUTC
  4593.     addq.w    #6,sp
  4594.     move.w    #1,-(sp)
  4595.     DOS    _EXIT2
  4596.  
  4597. make_scrn:                *画面作成
  4598.                     *初期画面の作成
  4599.     bsr    draw_cmnprms        *コモンパラメータ
  4600.     bsr    draw_box
  4601.     bsr    draw_mixbar_scale
  4602.     bra    draw_logo
  4603.  
  4604. draw_mixbar_scale:            *スケール描画(MASTER)
  4605.     movem.l    d0/d1-d3/a1,-(sp)
  4606. *    move.w    $e8002a,-(sp)
  4607. *    move.w    #$01_00+palet80,$e8002a        *同時アクセスON
  4608.     draw    9,4
  4609.     moveq.l    #if_max+2-1,d2
  4610. dmslp:
  4611.     pea    (a1)
  4612.     moveq.l    #8-1,d0
  4613.     move.l    #$6_0000,d1
  4614.     move.l    #$4_0000,d3
  4615. @@:
  4616.     move.b    #%0001_1000,(a1,d1.l)
  4617.     clr.b    (a1,d3.l)
  4618.     clr.b    (a1)
  4619.     lea    $80(a1),a1
  4620.     clr.b    (a1,d1.l)
  4621.     clr.b    (a1,d3.l)
  4622.     clr.b    (a1)
  4623.     lea    $80(a1),a1
  4624.     dbra    d0,@b
  4625.     move.l    (sp)+,a1
  4626.     add.w    #11,a1
  4627.     dbra    d2,dmslp
  4628. *    move.w    (sp)+,$e8002a
  4629.     movem.l    (sp)+,d0/d1-d3/a1
  4630.     rts
  4631.  
  4632. draw_mixbar_scale2:            *スケール描画(CH)
  4633.     * < a1.l=draw_address
  4634.     movem.l    d0/a1,-(sp)
  4635.     move.w    $e8002a,-(sp)
  4636.     move.w    #$01_00+palet80,$e8002a        *同時アクセスON
  4637.     moveq.l    #8-1,d0
  4638. @@:
  4639.     move.b    #%0001_1000,(a1)
  4640.     lea    $80(a1),a1
  4641.     clr.b    (a1)
  4642.     lea    $80(a1),a1
  4643.     dbra    d0,@b
  4644.     move.w    (sp)+,$e8002a
  4645.     movem.l    (sp)+,d0/a1
  4646.     rts
  4647.  
  4648. draw_mixbar_scale3:            *DEPTHスケール描画(CH)
  4649.     * < a1.l=draw_address
  4650.     movem.l    d0/a1,-(sp)
  4651.     move.w    $e8002a,-(sp)
  4652.     move.w    #$01_00+palet80,$e8002a        *同時アクセスON
  4653.     moveq.l    #16-1,d0
  4654. @@:
  4655.     move.b    #%0001_1000,(a1)
  4656.     lea    $80(a1),a1
  4657.     clr.b    (a1)
  4658.     lea    $80(a1),a1
  4659.     dbra    d0,@b
  4660.     move.w    (sp)+,$e8002a
  4661.     movem.l    (sp)+,d0/a1
  4662.     rts
  4663.  
  4664. draw_hold_scale:            *HOLD/@Rスケール描画
  4665.     * < a1.l=draw_address
  4666.     movem.l    d0/a1-a2,-(sp)
  4667.     move.w    $e8002a,-(sp)
  4668.     move.w    #$01_00+palet80,$e8002a        *同時アクセスON
  4669.     moveq.l    #4-1,d0
  4670. @@:
  4671.     move.b    #%0111_1110,(a1)
  4672.     lea    $80(a1),a1
  4673.     clr.b    (a1)
  4674.     lea    $80(a1),a1
  4675.     dbra    d0,@b
  4676.     lea    lamp_pat(pc),a2
  4677.     moveq.l    #8-1,d0
  4678. @@:
  4679.     move.b    (a2)+,(a1)
  4680.     lea    $80(a1),a1
  4681.     dbra    d0,@b
  4682.     move.w    (sp)+,$e8002a
  4683.     movem.l    (sp)+,d0/a1-a2
  4684.     rts
  4685.  
  4686. draw_pan_scale:                    *PANPOTスケール描画
  4687.     * < a1.l=draw_address
  4688.     movem.l    d0-d1/a1-a2,-(sp)
  4689.     move.w    $e8002a,-(sp)
  4690.     move.w    palet_tbl(pc),d1
  4691.     ori.w    #$01_00,d1
  4692.     move.w    d1,$e8002a        *同時アクセスON
  4693.     moveq.l    #16-1,d0
  4694.     lea    pantrim0(pc),a2
  4695. @@:
  4696.     move.b    (a2)+,(a1)+
  4697.     move.b    (a2)+,(a1)+
  4698.     lea    $80-2(a1),a1
  4699.     dbra    d0,@b
  4700.     move.w    (sp)+,$e8002a
  4701.     movem.l    (sp)+,d0-d1/a1-a2
  4702.     rts
  4703.  
  4704. draw_logo:                *LOGO描画
  4705.     movem.l    d0-d1/a1-a2,-(sp)
  4706.     move.w    $e8002a,-(sp)
  4707.     move.w    #$01_00+palet90,$e8002a        *同時アクセスON
  4708.     draw    86,4
  4709.     moveq.l    #3-1,d1
  4710.     lea    logo_z(pc),a2
  4711. dllp:
  4712.     pea    2(a1)
  4713.     moveq.l    #16-1,d0
  4714. @@:
  4715.     move.b    (a2)+,(a1)+
  4716.     move.b    (a2)+,(a1)+
  4717.     lea    $80-2(a1),a1
  4718.     dbra    d0,@b
  4719.     move.l    (sp)+,a1
  4720.     dbra    d1,dllp
  4721.  
  4722.     draw    92,4
  4723.     lea    zsv_ver(pc),a2
  4724.     moveq.l    #palet90,d1
  4725.     bsr    cgwr
  4726.  
  4727.     move.w    (sp)+,$e8002a
  4728.     movem.l    (sp)+,d0-d1/a1-a2
  4729.     rts
  4730.  
  4731. draw_level_scale:                *LEVELスケール描画
  4732.     * < a1.l=draw_address
  4733.     movem.l    d0/a1,-(sp)
  4734.     move.w    $e8002a,-(sp)
  4735.     move.w    #$01_00+paleta0,$e8002a        *同時アクセスON
  4736.     moveq.l    #8-1,d0
  4737. @@:
  4738.     st.b    (a1)
  4739.     lea    $80(a1),a1
  4740.     clr.b    (a1)
  4741.     lea    $80(a1),a1
  4742.     dbra    d0,@b
  4743.     move.w    (sp)+,$e8002a
  4744.     movem.l    (sp)+,d0/a1
  4745.     rts
  4746.  
  4747. draw_mixbar:
  4748.     *< d0.l=now(0-128)
  4749.     *< d1.l=previous(0-128)
  4750.     *< a3.l=addr
  4751.     movem.l    d0-d1/a1/a3,-(sp)
  4752.     move.l    a3,a1
  4753.     lsr.l    #3,d1
  4754.     add.w    d1,d1
  4755.     add.w    mixbar_pos_tbl(pc,d1.w),a3
  4756.     move.w    $e8002a,-(sp)
  4757.     move.w    #$01_00+palet50,$e8002a    *同時アクセスON
  4758.     clr.b    (a3)            *前のトリムを削除
  4759.     lsr.l    #3,d0
  4760.     add.w    d0,d0
  4761.     add.w    mixbar_pos_tbl(pc,d0.w),a1
  4762.     move.b    #%0111_1110,(a1)
  4763.     move.w    (sp)+,$e8002a
  4764.     movem.l    (sp)+,d0-d1/a1/a3
  4765.     rts
  4766.  
  4767. mixbar_pos_tbl:
  4768.     dc.w    -$000,-$080,-$100,-$180,-$200,-$280,-$300,-$380
  4769.     dc.w    -$400,-$480,-$500,-$580,-$600,-$680,-$700,-$780
  4770.     dc.w    -$780
  4771.  
  4772. draw_bender:
  4773.     *< d5.l=now(-8192~+8191,-768~+768)
  4774.     *< d1.l=previous(-8192~+8191,-768~+768)
  4775.     *< a3.l=addr
  4776.     movem.l    d1/d5/a1/a3,-(sp)
  4777.     tst.w    p_type(a5)
  4778.     bpl    1f
  4779.     cmpi.l    #8191,d5
  4780.     ble    @f
  4781.     move.l    #8191,d5
  4782. @@:
  4783.     cmpi.l    #-8192,d5
  4784.     bge    @f
  4785.     move.l    #-8192,d5
  4786. @@:
  4787.     add.l    #8192,d5        *0-16383
  4788.     lsr.l    #8,d5
  4789.     lsr.l    #2,d5
  4790.  
  4791.     cmpi.l    #8191,d1
  4792.     ble    @f
  4793.     move.l    #8191,d1
  4794. @@:
  4795.     cmpi.l    #-8192,d1
  4796.     bge    @f
  4797.     move.l    #-8192,d1
  4798. @@:
  4799.     add.l    #8192,d1        *0-16383
  4800.     lsr.l    #8,d1
  4801.     lsr.l    #2,d1
  4802.     bra    do_draw_bender
  4803. 1:
  4804.     cmpi.l    #768,d5
  4805.     ble    @f
  4806.     move.l    #768,d5
  4807. @@:
  4808.     cmpi.l    #-768,d5
  4809.     bge    @f
  4810.     move.l    #-768,d5
  4811. @@:
  4812.     add.l    #768,d5
  4813.     divu    #96,d5
  4814.  
  4815.     cmpi.l    #768,d1
  4816.     ble    @f
  4817.     move.l    #768,d1
  4818. @@:
  4819.     cmpi.l    #-768,d1
  4820.     bge    @f
  4821.     move.l    #-768,d1
  4822. @@:
  4823.     add.l    #768,d1
  4824.     divu    #96,d1
  4825. do_draw_bender:
  4826.     move.l    a3,a1
  4827.     add.w    d1,d1
  4828.     add.w    bender_pos_tbl(pc,d1.w),a3
  4829.     move.w    $e8002a,-(sp)
  4830.     move.w    #$01_00+palet50,$e8002a    *同時アクセスON
  4831.     clr.b    (a3)            *前のトリムを削除
  4832.     add.w    d5,d5
  4833.     add.w    bender_pos_tbl(pc,d5.w),a1
  4834.     move.b    #%0111_1110,(a1)
  4835.     move.w    (sp)+,$e8002a
  4836.     movem.l    (sp)+,d1/d5/a1/a3
  4837.     rts
  4838.  
  4839. bender_pos_tbl:
  4840.     dc.w    -$000,-$080,-$100,-$180,-$200,-$280,-$300,-$380
  4841.     dc.w    -$400,-$480,-$500,-$580,-$600,-$680,-$700,-$780
  4842.     dc.w    -$780
  4843. *    dc.w    -$800,-$880,-$900,-$980,-$a00,-$a80,-$b00,-$b80
  4844. *    dc.w    -$c00,-$c80,-$d00,-$d80,-$e00,-$e80,-$f00,-$f80
  4845. *    dc.w    -$f80
  4846.  
  4847. draw_pedal:
  4848.     *< d0.l=now(0-127)
  4849.     *< d1.l=previous(0-127)
  4850.     *< a3.l=addr
  4851.     move.w    $e8002a,-(sp)
  4852.     move.w    #$01_00+palet50,$e8002a    *同時アクセスON
  4853.     movem.l    d0-d3,-(sp)
  4854.     lsr.w    #4,d1
  4855.     lsr.w    #4,d0
  4856.     moveq.l    #1,d2
  4857.     cmp.w    d0,d1
  4858.     bls    @f
  4859.     moveq.l    #-1,d2
  4860. @@:
  4861.     move.l    d1,d3
  4862. drwpdllp:
  4863.     movem.l    d0-d1/a1/a3,-(sp)
  4864.     move.l    a3,a1
  4865.     tst.w    d2
  4866.     bpl    @f
  4867.     add.w    d3,d3
  4868.     add.w    pedal_pos_tbl(pc,d3.w),a3
  4869.     clr.b    (a3)            *前のトリムを削除
  4870. @@:
  4871.     add.w    d1,d1
  4872.     btst.l    #1,d1
  4873.     beq    @f
  4874.     add.w    pedal_pos_tbl(pc,d1.w),a1
  4875.     move.b    #%0111_1110,(a1)
  4876. @@:
  4877.     movem.l    (sp)+,d0-d1/a1/a3
  4878.     cmp.w    d0,d1
  4879.     beq    @f
  4880.     move.l    d1,d3
  4881.     add.w    d2,d1
  4882.     bra    drwpdllp
  4883. @@:
  4884.     movem.l    (sp)+,d0-d3
  4885.     move.w    (sp)+,$e8002a
  4886.     rts
  4887.  
  4888. pedal_pos_tbl:
  4889.     dc.w    -$000,-$080,-$100,-$180,-$200,-$280,-$300,-$380
  4890. *    dc.w    -$400,-$480,-$500,-$580,-$600,-$680,-$700,-$780
  4891.  
  4892. draw_lamp:
  4893.     *< d0.l=value($80 or not)    $80...NO OFF
  4894.     *< a3.l=addr
  4895.     movem.l    d0-d1/a1/a3,-(sp)
  4896.     move.w    $e8002a,-(sp)
  4897.     move.l    a3,a1
  4898.     move.w    #$01_00+paletf0,$e8002a    *同時アクセスON
  4899.     moveq.l    #8-1,d1
  4900. @@:
  4901.     clr.b    (a1)            *前のトリムを削除
  4902.     lea    $80(a1),a1
  4903.     dbra    d1,@b
  4904.  
  4905.     move.w    #$01_00+palet90,d1
  4906.     tst.b    d0
  4907.     bmi    @f
  4908.     move.w    #$01_00+palet60,d1
  4909. @@:
  4910.     move.w    d1,$e8002a        *同時アクセスON
  4911.     lea    lamp_pat(pc),a1
  4912.     moveq.l    #8-1,d1
  4913. @@:
  4914.     move.b    (a1)+,(a3)
  4915.     lea    $80(a3),a3
  4916.     dbra    d1,@b
  4917.  
  4918.     move.w    (sp)+,$e8002a
  4919.     movem.l    (sp)+,d0-d1/a1/a3
  4920.     rts
  4921.  
  4922. draw_pan:
  4923.     *< d0.w=now(0-128)
  4924.     *< a3.l=addr
  4925.     movem.l    d0-d1/a1/a3,-(sp)
  4926.     mulu    #18,d0
  4927.     divu    #127,d0
  4928.     lsl.w    #5,d0
  4929.     lea    pantrim_tbl(pc),a1
  4930.     add.w    d0,a1
  4931.     move.w    $e8002a,-(sp)
  4932.     ori.w    #$01_00,d1
  4933.     move.w    d1,$e8002a        *同時アクセスON
  4934.     moveq.l    #16-1,d0
  4935. @@:
  4936.     move.b    (a1)+,(a3)+
  4937.     move.b    (a1)+,(a3)+
  4938.     add.w    #$80-2,a3
  4939.     dbra    d0,@b
  4940.     move.w    (sp)+,$e8002a
  4941.     movem.l    (sp)+,d0-d1/a1/a3
  4942.     rts
  4943.  
  4944. draw_arccbar:
  4945.     *< d2.w=now(-128~+127)
  4946.     *< d1.w=previous(-128~+127)
  4947.     *< a3.l=addr
  4948.     movem.l    d1-d2/a1/a3,-(sp)
  4949.     ext.w    d2
  4950.     add.w    #128,d2
  4951.     lsr.w    #4,d2
  4952.     ext.w    d1
  4953.     add.w    #128,d1
  4954.     lsr.w    #4,d1
  4955.     move.l    a3,a1
  4956.     add.w    d1,d1
  4957.     add.w    arcc_pos_tbl(pc,d1.w),a3
  4958.     move.w    $e8002a,-(sp)
  4959.     move.w    #$01_00+palet50,$e8002a    *同時アクセスON
  4960.     clr.b    (a3)            *前のトリムを削除
  4961.     add.w    d2,d2
  4962.     add.w    arcc_pos_tbl(pc,d2.w),a1
  4963.     move.b    #%0111_1110,(a1)
  4964.     move.w    (sp)+,$e8002a
  4965.     movem.l    (sp)+,d1-d2/a1/a3
  4966.     rts
  4967.  
  4968. arcc_pos_tbl:
  4969.     dc.w    -$000,-$080,-$100,-$180,-$200,-$280,-$300,-$380
  4970.     dc.w    -$400,-$480,-$500,-$580,-$600,-$680,-$700,-$780
  4971. *    dc.w    -$780
  4972.  
  4973. disp_percentage:
  4974.     movem.l    d0-d3/a1,-(sp)
  4975.     move.w    $e8002a,-(sp)
  4976.     move.w    $e8002e,-(sp)
  4977.  
  4978.     clr.w    $e8002a
  4979.     draw    96,4
  4980.     moveq.l    #4-1,d3
  4981. dsppcntlp2:
  4982.     pea    (a1)
  4983.     moveq.l    #16-1,d2
  4984. dsppcntlp1:
  4985.     move.w    #$00,ccr
  4986.     roxl.w    -(a1)
  4987.     roxl.w    -(a1)
  4988.     roxl.w    -(a1)
  4989.     roxl.w    -(a1)
  4990.     add.w    #$80+8,a1
  4991.     dbra    d2,dsppcntlp1
  4992.     move.l    (sp)+,a1
  4993.     add.l    #$02_0000,a1
  4994.     dbra    d3,dsppcntlp2
  4995.  
  4996.     lea    $e00000+94+$80*5*8+7*$80,a1
  4997.     move.l    x_count(pc),d0
  4998.     lsr.l    #5,d0        *<<4+>>9=>>5
  4999.     cmpi.l    #15,d0
  5000.     bls    @f
  5001.     moveq.l    #15,d0
  5002. @@:
  5003.     add.w    d0,d0
  5004.     add.w    d0,d0
  5005.     move.w    #$fffe,$e8002e
  5006. @@:
  5007.     pea    (a1)
  5008.     add.w    percent_pos_tbl+2(pc,d0.w),a1
  5009.     move.w    percent_pos_tbl+0(pc,d0.w),$e8002a    *同時アクセスON
  5010.     move.w    #-1,(a1)
  5011.     move.l    (sp)+,a1
  5012.     subq.w    #4,d0
  5013.     bne    @b
  5014.     move.w    (sp)+,$e8002e
  5015.  
  5016.     move.l    x_count(pc),d0
  5017.     cmp.l    cpu_power(pc),d0
  5018.     beq    @f
  5019.     mulu    #100,d0
  5020.     lsr.l    #8,d0
  5021.     lsr.l    #1,d0
  5022.     bsr    num_to_str
  5023.     moveq.l    #palet30,d1
  5024.     draw    84,5
  5025.     lea    suji+7(pc),a2
  5026.     bsr    cgwr
  5027. @@:
  5028.     move.w    (sp)+,$e8002a
  5029.     movem.l    (sp)+,d0-d3/a1
  5030.     rts
  5031.  
  5032. percent_pos_tbl:
  5033.     dc.w    $0300+palet90,-$000,$0300+palet90,-$080,$0300+palet90,-$100,$0300+palet90,-$180
  5034.     dc.w    $0300+paletc0,-$200,$0300+paletc0,-$280,$0300+paletc0,-$300,$0300+paletc0,-$380
  5035.     dc.w    $0300+palet40,-$400,$0300+palet40,-$480,$0300+palet40,-$500,$0300+palet40,-$580
  5036.     dc.w    $0300+palet40,-$600,$0300+palet40,-$680,$0300+palet40,-$700,$0300+palet40,-$780
  5037.  
  5038. draw_attack:
  5039.     *< d1.l=now(0-15)
  5040.     *< d2.l=previous(0-15)
  5041.     *< a3.l=addr
  5042.     move.w    $e8002a,-(sp)
  5043.     movem.l    d1-d4,-(sp)
  5044.     moveq.l    #1,d3
  5045.     cmp.w    d1,d2
  5046.     bls    @f
  5047.     moveq.l    #-1,d3
  5048. @@:
  5049.     move.l    d2,d4
  5050. drwatklp:
  5051.     movem.l    d1-d2/a1/a3,-(sp)
  5052.     move.l    a3,a1
  5053.     add.w    d4,d4
  5054.     add.w    d4,d4
  5055.     bne    @f
  5056.     moveq.l    #4,d4
  5057. @@:
  5058.     add.w    d2,d2
  5059.     add.w    d2,d2
  5060.     bne    @f
  5061.     moveq.l    #4,d2
  5062. @@:
  5063.     tst.w    d3
  5064.     bpl    @f
  5065.     add.w    attack_pos_tbl+2(pc,d4.w),a3
  5066.     move.w    #$01_00+paletf0,$e8002a        *同時アクセスON
  5067.     clr.b    (a3)                *前のトリムを削除
  5068.     cmp.w    d2,d4
  5069.     beq    @f
  5070.     btst.l    #2,d4
  5071.     beq    @f
  5072.     move.w    #$01_00+paleta0,$e8002a        *同時アクセスON
  5073.     st.b    (a3)
  5074. @@:
  5075.     add.w    attack_pos_tbl+2(pc,d2.w),a1
  5076.     move.w    #$01_00+paletf0,$e8002a        *同時アクセスON
  5077.     clr.b    (a1)                *前のトリムを削除
  5078.     btst.l    #2,d2
  5079.     beq    @f
  5080.     move.w    attack_pos_tbl(pc,d2.w),$e8002a    *同時アクセスON
  5081.     st.b    (a1)
  5082. @@:
  5083.     movem.l    (sp)+,d1-d2/a1/a3
  5084.     cmp.w    d1,d2
  5085.     beq    @f
  5086.     move.l    d2,d4
  5087.     add.w    d3,d2
  5088.     bra    drwatklp
  5089. @@:
  5090.     movem.l    (sp)+,d1-d4
  5091.     move.w    (sp)+,$e8002a
  5092.     rts
  5093.  
  5094. attack_pos_tbl:
  5095.     dc.w    $0100+palet40,-$000,$0100+palet40,-$080,$0100+palet40,-$100,$0100+palet40,-$180
  5096.     dc.w    $0100+palet40,-$200,$0100+palet40,-$280,$0100+palet40,-$300,$0100+palet40,-$380
  5097.     dc.w    $0100+paletc0,-$400,$0100+paletc0,-$480,$0100+paletc0,-$500,$0100+paletc0,-$580
  5098.     dc.w    $0100+palet90,-$600,$0100+palet90,-$680,$0100+palet90,-$700,$0100+palet90,-$780
  5099.  
  5100. draw_release:                *アタックグラフ減衰表示
  5101.     *< d2.l=now(0-15)
  5102.     *< a3.l=addr
  5103.     move.w    $e8002a,-(sp)
  5104.     movem.l    d2/a3,-(sp)
  5105.     add.w    d2,d2
  5106.     bne    @f
  5107.     moveq.l    #2,d2
  5108. @@:
  5109.     add.w    release_pos_tbl(pc,d2.w),a3
  5110.     move.w    #$01_00+paletf0,$e8002a        *同時アクセスON
  5111.     clr.b    (a3)
  5112.     btst.l    #1,d2
  5113.     beq    @f
  5114.     move.w    #$01_00+paleta0,$e8002a        *同時アクセスON
  5115.     st.b    (a3)
  5116. @@:
  5117.     movem.l    (sp)+,d2/a3
  5118.     move.w    (sp)+,$e8002a
  5119.     rts
  5120.  
  5121. release_pos_tbl:
  5122.     dc.w    -$000,-$080,-$100,-$180,-$200,-$280,-$300,-$380
  5123.     dc.w    -$400,-$480,-$500,-$580,-$600,-$680,-$700,-$780
  5124.  
  5125. draw_box:            *ボックス描画
  5126.     movem.l    d0-d1/a1-a2,-(sp)
  5127.     move.w    $e8002a,-(sp)
  5128.     move.w    #$01_00+palet30,$e8002a    *同時アクセスON
  5129.     lea    $e00000+54+$80*3*8,a1
  5130.     lea    $e00000+54+$80*3*8+$80*6,a2
  5131.     move.b    #$01,(a1)+
  5132.     move.b    #$01,(a2)+
  5133.     moveq.l    #41-1,d0
  5134. @@:
  5135.     st.b    (a1)+
  5136.     st.b    (a2)+
  5137.     dbra    d0,@b
  5138.  
  5139.     lea    $e00000+54+$80*3*8+$80,a1
  5140.     moveq.l    #5-1,d0
  5141. @@:
  5142.     move.l    #$01000000,(a1)+
  5143.     rept    9
  5144.     clr.l    (a1)+
  5145.     endm
  5146.     move.w    #$01,(a1)+
  5147.     add.w    #$80-42,a1
  5148.     dbra    d0,@b
  5149.     move.w    (sp)+,$e8002a
  5150.     movem.l    (sp)+,d0-d1/a1-a2
  5151.     rts
  5152.  
  5153. clear_box:                *ボックスデリート
  5154.     movem.l    d0-d1/a1-a2,-(sp)
  5155.     move.w    $e8002a,-(sp)
  5156.     move.w    #$01_00+palet40,$e8002a    *同時アクセスON
  5157.  
  5158.     lea    $e00000+54+$80*3*8+$80,a1
  5159.     moveq.l    #5-1,d0
  5160. @@:
  5161.     rept    10
  5162.     clr.l    (a1)+
  5163.     endm
  5164.     clr.w    (a1)+
  5165.     add.w    #$80-42,a1
  5166.     dbra    d0,@b
  5167.     move.w    (sp)+,$e8002a
  5168.     movem.l    (sp)+,d0-d1/a1-a2
  5169.     rts
  5170.  
  5171. draw_edge:            *縦棒
  5172.     * < d1.l=ptr
  5173.     * - all
  5174.     movem.l    d0-d2/a1,-(sp)
  5175.     move.l    d1,d0
  5176.     lsr.l    #3,d1
  5177.     lea    $e00000+$40000+55+$80*3*8+$80,a1    *x=55,y=3
  5178.     add.w    d1,a1
  5179.     andi.w    #7,d0
  5180.     move.b    ptn(pc,d0.w),d0
  5181.  
  5182.     move.w    $e8002a,-(sp)
  5183.     clr.w    $e8002a            *同時アクセスOFF
  5184.     moveq.l    #5-1,d1
  5185. @@:
  5186.     or.b    d0,(a1)
  5187.     add.w    #$80,a1
  5188.     dbra    d1,@b
  5189.     move.w    (sp)+,$e8002a
  5190.     movem.l    (sp)+,d0-d2/a1
  5191.     rts
  5192. ptn:    dc.b    $80,$40,$20,$10,$08,$04,$02,$01
  5193.  
  5194. draw_cmnprms:                *コモンパラメータのタイトル
  5195.     draw    0,2
  5196.     lea    common1_tbl(pc),a2
  5197.     moveq    #palet30,d1
  5198.     bsr    cgwr
  5199.  
  5200.     draw    0,3
  5201.     lea    common2_tbl(pc),a2
  5202.     moveq    #palet30,d1
  5203.     bsr    cgwr
  5204.  
  5205.     draw    0,4
  5206.     lea    common3_tbl(pc),a2
  5207.     moveq    #palet30,d1
  5208.     bsr    cgwr
  5209.  
  5210.     draw    0,5
  5211.     lea    common4_tbl(pc),a2
  5212.     moveq    #palet30,d1
  5213.     bra    cgwr
  5214.  
  5215. draw_opmmap_ttl:
  5216. reglist    reg    d0-d3/a0-a2
  5217.     movem.l    reglist,-(sp)
  5218.     move.w    $e8002a,-(sp)
  5219.     move.w    #$01_00+paletf0,$e8002a        *同時アクセス
  5220.  
  5221.     lea    $e00000+96,a0
  5222.     move.w    #(trn+1)*16-1,d0
  5223. 1:
  5224.     moveq.l    #8-1,d1
  5225. 2:
  5226.     clr.l    (a0)+
  5227.     dbra    d1,2b
  5228.     lea    96(a0),a0
  5229.     dbra    d0,1b
  5230.     move.w    (sp)+,$e8002a
  5231.  
  5232.     lea    opm_data(pc),a1
  5233.     move.w    #1024/4-1,d0
  5234. @@:
  5235.     clr.l    (a1)+
  5236.     dbra    d0,@b
  5237.  
  5238.     draw    96,2
  5239.     lea    FMttlg0(pc),a2
  5240.     moveq.l    #palet30,d1
  5241.     bsr    cgwr
  5242.  
  5243.     draw    96,3
  5244.     lea    FMttlg1(pc),a2
  5245.     bsr    cgwr
  5246.  
  5247.     draw    96,4
  5248.     lea    FMttlg2(pc),a2
  5249.     bsr    cgwr
  5250.  
  5251.     draw    96,6
  5252.     moveq.l    #8-1,d2
  5253.     moveq.l    #'1',d3
  5254. 1:
  5255.     moveq.l    #palet30,d1
  5256.     btst.l    #0,d2
  5257.     beq    @f
  5258.     moveq.l    #palet20,d1
  5259. @@:
  5260.     lea    FMttl0(pc),a2
  5261.     bsr    cgwr
  5262.     moveq.l    #palet90,d1
  5263.     lea    FMchn(pc),a2
  5264.     move.l    d3,d0
  5265.     move.b    d3,2(a2)
  5266.     addq.w    #1,a1
  5267.     bsr    cgwr
  5268.     add.w    #$80*8*6-1,a1
  5269.     addq.w    #1,d3
  5270.     dbra    d2,1b
  5271.  
  5272.     draw    96,7
  5273.     lea    FMttl1(pc),a2
  5274.     moveq.l    #8-1,d2
  5275. 1:
  5276.     moveq.l    #palet30,d1
  5277.     btst.l    #0,d2
  5278.     beq    @f
  5279.     moveq.l    #palet20,d1
  5280. @@:
  5281.     bsr    cgwr
  5282.     add.w    #$80*8*6,a1
  5283.     dbra    d2,1b
  5284.     movem.l    (sp)+,reglist
  5285.     rts
  5286.  
  5287. draw_trkprms:                *トラックパラメータのタイトル
  5288.     * < d1.l=palet
  5289.     * < a1.l=addr
  5290.     * - all
  5291.     movem.l    a1-a2,-(sp)
  5292.     lea    track_tbl1(pc),a2
  5293.     bsr    cgwr
  5294.     add.w    #$80*8,a1
  5295.  
  5296.     lea    track_tbl2(pc),a2
  5297.     bsr    cgwr
  5298.     add.w    #$80*8,a1
  5299.  
  5300.     lea    track_tbl3(pc),a2
  5301.     bsr    cgwr
  5302.     add.w    #$80*8,a1
  5303.  
  5304.     lea    track_tbl4(pc),a2
  5305.     bsr    cgwr
  5306.     add.w    #$80*8,a1
  5307.  
  5308.     movem.l    d0-d1/a1,-(sp)        *KEYBOARD
  5309.     move.w    $e8002a,-(sp)
  5310.     ori.w    #$01_00,d1    *同時アクセスON
  5311.     move.w    d1,$e8002a    *アクセスモード設定
  5312.     add.w    #48,a1
  5313.     moveq.l    #10-1,d0
  5314. drwkblp0:
  5315.     moveq.l    #12-1,d1
  5316.     lea    kbd_ptn1(pc),a2
  5317.     pea    (a1)
  5318. @@:
  5319.     move.l    (a2)+,(a1)+
  5320.     dbra    d1,@b
  5321.     move.l    (sp)+,a1
  5322.     add.w    #$80,a1
  5323.     dbra    d0,drwkblp0
  5324.  
  5325.     moveq.l    #5-1,d0
  5326. drwkblp1:
  5327.     moveq.l    #12-1,d1
  5328.     lea    kbd_ptn2(pc),a2
  5329.     pea    (a1)
  5330. @@:
  5331.     move.l    (a2)+,(a1)+
  5332.     dbra    d1,@b
  5333.     move.l    (sp)+,a1
  5334.     add.w    #$80,a1
  5335.     dbra    d0,drwkblp1
  5336.  
  5337. *    moveq.l    #12-1,d1
  5338. *    lea    kbd_ptn3(pc),a2
  5339. *@@:
  5340. *    move.l    (a2)+,(a1)+
  5341. *    dbra    d1,@b
  5342.  
  5343.     move.w    (sp)+,$e8002a
  5344.     movem.l    (sp)+,d0-d1/a1
  5345.  
  5346.     lea    track_tbl5(pc),a2
  5347.     bsr    cgwr
  5348.     add.w    #$80*8,a1
  5349.  
  5350.     lea    track_tbl6(pc),a2
  5351.     bsr    cgwr
  5352.     movem.l    (sp)+,a1-a2
  5353.     rts
  5354.  
  5355. cgwr:                *8*8文字書き込み
  5356.     * < d1.w=attr(0000_0000~1111_0000)
  5357.     * < a1.l=write address
  5358.     * < a2.l=str address
  5359.     movem.l    d0-d1/a1-a3,-(sp)
  5360.     move.w    $e8002a,-(sp)
  5361.     ori.w    #$01_00,d1    *同時アクセスON
  5362.     move.w    d1,$e8002a    *アクセスモード設定
  5363. cgwrlp:
  5364.     moveq.l    #0,d0
  5365.     move.b    (a2)+,d0
  5366.     bmi    next_cgwr
  5367.     beq    exit_cgwr
  5368.     pea    (a1)
  5369.     lsl.w    #3,d0
  5370.     move.l    font_addr(pc),a3    *CG ADR
  5371.     add.w    d0,a3
  5372.     moveq.l    #8-1,d1
  5373. @@:
  5374.     move.b    (a3)+,(a1)
  5375.     lea    $80(a1),a1
  5376.     dbra    d1,@b
  5377.     move.l    (sp)+,a1
  5378. next_cgwr:
  5379.     addq.w    #1,a1
  5380.     bra    cgwrlp
  5381. exit_cgwr:
  5382.     move.w    (sp)+,$e8002a
  5383.     movem.l    (sp)+,d0-d1/a1-a3
  5384.     rts
  5385.  
  5386. draw_hbar_fm_noise:
  5387.     move.b    hbvtbl_n(pc,d0.w),d0
  5388.     bra    draw_hbar
  5389.  
  5390. hbvtbl_n:
  5391.         .dc.b      0,  1,  8, 16, 20, 26, 30, 35, 39, 43
  5392.         .dc.b     47, 51, 54, 57, 59, 61, 63, 65, 67, 68
  5393.         .dc.b     70, 71, 72, 73, 75, 76, 77, 78, 79, 80
  5394.         .dc.b     81, 82, 83, 84, 84, 85, 86, 87, 88, 89
  5395.         .dc.b     89, 90, 91, 92, 92, 93, 94, 94, 95, 96
  5396.         .dc.b     96, 97, 98, 98, 99,100,100,101,102,102
  5397.         .dc.b    103,103,104,104,105,105,106,106,107,107
  5398.         .dc.b    108,108,109,109,110,110,111,111,111,112
  5399.         .dc.b    112,113,113,113,114,114,114,115,115,116
  5400.         .dc.b    116,116,117,117,117,118,118,118,119,119
  5401.         .dc.b    119,120,120,120,121,121,121,122,122,122
  5402.         .dc.b    123,123,123,123,124,124,124,124,125,125
  5403.         .dc.b    125,125,126,126,126,126,127,127
  5404.  
  5405. draw_hbar_fm:                *FM音源ケース
  5406.     move.b    hbvtbl(pc,d0.w),d0
  5407. draw_hbar:                *8*8文字書き込み
  5408.     * < d0.w=0-127
  5409.     * < d1.w=attr(0000_0000~1111_0000)
  5410.     * < a1.l=write address
  5411. reglist    reg    d0-d1/a1/a3
  5412.     movem.l    reglist,-(sp)
  5413.     move.w    $e8002a,-(sp)
  5414.     ori.w    #$01_00,d1        *同時アクセスON
  5415.     move.w    d1,$e8002a        *アクセスモード設定
  5416.     lea    hbar_data(pc),a3
  5417.     tst.w    d0
  5418.     beq    @f
  5419.     andi.w    #$fffc,d0
  5420.     lea    4(a3,d0.w),a3
  5421. @@:
  5422.     clr.b    (a1)+
  5423.     clr.b    (a1)+
  5424.     clr.b    (a1)+
  5425.     clr.b    (a1)+
  5426.     lea    $80-4(a1),a1
  5427.     moveq.l    #5-1,d1
  5428. @@:
  5429.     move.b    (a3),(a1)+
  5430.     move.b    1(a3),(a1)+
  5431.     move.b    2(a3),(a1)+
  5432.     move.b    3(a3),(a1)+
  5433.     lea    $80-4(a1),a1
  5434.     dbra    d1,@b
  5435.     clr.b    (a1)+
  5436.     clr.b    (a1)+
  5437.     clr.b    (a1)+
  5438.     clr.b    (a1)+
  5439.     move.w    (sp)+,$e8002a
  5440.     movem.l    (sp)+,reglist
  5441.     rts
  5442.  
  5443. hbvtbl:
  5444.     .dc.b      0,  0,  0,  0,  0,  0,  0,  0,  0,  0
  5445.     .dc.b      0,  0,  0,  0,  0,  0,  0,  0,  0,  0
  5446.     .dc.b      0,  0,  0,  0,  0,  0,  0,  0,  0,  0
  5447.     .dc.b      0,  0,  0,  0,  0,  0,  0,  0,  0,  0
  5448.     .dc.b      0,  0,  0,  0,  0,  0,  0,  0,  0,  0
  5449.     .dc.b      0,  0,  1,  1,  1,  1,  1,  1,  2,  2
  5450.     .dc.b      2,  2,  3,  3,  3,  4,  4,  5,  5,  6
  5451.     .dc.b      6,  7,  7,  8,  8,  9, 10, 10, 11, 12
  5452.     .dc.b     13, 14, 15, 16, 17, 18, 19, 20, 22, 23
  5453.     .dc.b     24, 26, 27, 29, 30, 32, 34, 36, 38, 40
  5454.     .dc.b     42, 44, 46, 48, 50, 52, 55, 57, 60, 62
  5455.     .dc.b     65, 68, 72, 74, 77, 81, 84, 88, 91, 94
  5456.     .dc.b     98,102,106,110,114,118,122,127
  5457.  
  5458. key_bind_db:
  5459.     movem.l    d0-d2/d4/a0/a2,-(sp)
  5460.  
  5461.     pea    zp_key(pc)
  5462.     bsr    search_env
  5463.     addq.w    #4,sp
  5464.     tst.l    d0
  5465.     beq    quit_zk_db
  5466.  
  5467.     moveq.l    #$7f,d4
  5468.     move.l    d0,a2
  5469.     lea    key_tbl_db(pc),a0
  5470.     moveq.l    #14-1,d2
  5471. @@:
  5472.     bsr    get_num
  5473.     ror.b    #4,d1
  5474.     move.b    d1,(a0)+
  5475.     dbra    d2,@b
  5476. quit_zk_db:
  5477.     movem.l    (sp)+,d0-d2/d4/a0/a2
  5478.     rts
  5479.  
  5480. work:    set    zsv_work
  5481.     .include    fopen.has
  5482.  
  5483. chk_kanji:
  5484.     tst.b    d0
  5485.     bpl    @f        *normal characters
  5486.     cmpi.b    #$a0,d0        *漢字か
  5487.     bcs    cknj_yes
  5488.     cmpi.b    #$df,d0
  5489.     bls    @f
  5490. cknj_yes:
  5491.     move.w    #CCR_NEGA,ccr    *yes
  5492.     rts
  5493. @@:
  5494.     move.w    #CCR_ZERO,ccr    *no
  5495.     rts
  5496.  
  5497. chk_num:            *数字かどうかチェック
  5498.     * > eq=number
  5499.     * > mi=not num
  5500.     move.l    d0,-(sp)
  5501.     bsr    skip_spc
  5502.     move.b    (a2),d0
  5503.     cmpi.b    #'%',d0
  5504.     beq    yes_num
  5505.     cmpi.b    #'$',d0
  5506.     beq    yes_num
  5507.     cmpi.b    #'-',d0
  5508.     beq    yes_num
  5509.     cmpi.b    #'+',d0
  5510.     beq    yes_num
  5511.     cmpi.b    #'0',d0
  5512.     bcs    not_num
  5513.     cmpi.b    #'9',d0
  5514.     bhi    not_num
  5515. yes_num:
  5516.     move.l    (sp)+,d0
  5517.     move.w    #CCR_ZERO,ccr
  5518.     rts
  5519. not_num:
  5520.     move.l    (sp)+,d0
  5521.     move.w    #CCR_NEGA,ccr
  5522.     rts
  5523.  
  5524. get_num:            *数字文字列を数値へ
  5525.     * < (a2)=number strings
  5526.     * > d1.l=value
  5527.     * > a2=next
  5528.     * - all
  5529. reglist    reg    d0/d2-d3
  5530.     bsr    skip_spc    *' ',tabなどをskip
  5531.     tst.b    (a2)
  5532.     beq    num_ret
  5533.     movem.l    reglist,-(sp)
  5534.     cmpi.b    #'-',(a2)
  5535.     seq    d2           *'-'ならマーク
  5536.     bne    get_num0
  5537.     addq.w    #1,a2        *skip '-'
  5538. get_num0:
  5539.     bsr    skip_plus
  5540.     bsr    skip_spc
  5541.  
  5542.     cmpi.b    #'$',(a2)
  5543.     beq    get_hexnum_
  5544.     cmpi.b    #'%',(a2)
  5545.     beq    get_binnum_
  5546.  
  5547.     moveq.l    #0,d1
  5548.     moveq.l    #0,d0
  5549. num_lp01:
  5550.     move.b    (a2)+,d0
  5551.     beq    num_exit
  5552. *    cmpi.b    #'_',d0
  5553. *    beq    num_lp01
  5554.     sub.b    #$30,d0
  5555.     bmi    num_exit
  5556.     cmp.b    #9,d0
  5557.     bhi    num_exit
  5558.  
  5559.     add.l    d1,d1
  5560.     move.l    d1,d3
  5561.     lsl.l    #2,d1
  5562.     add.l    d3,d1        *d1=d1*10
  5563.     add.l    d0,d1        *d1=d1+d0
  5564.     bra    num_lp01
  5565. num_exit:
  5566.     subq.w    #1,a2
  5567.     tst.b    d2
  5568.     beq    @f
  5569.     neg.l    d1
  5570. @@:
  5571.     movem.l    (sp)+,reglist
  5572. num_ret:
  5573.     rts
  5574. get_hexnum_:            *16進数
  5575.     moveq.l    #0,d0
  5576.     moveq.l    #0,d1
  5577.     tst.b    (a2)+
  5578.     beq    num_exit
  5579.     bsr    skip_spc
  5580. __num_lp01_:
  5581.     move.b    (a2)+,d0
  5582.     beq    num_exit
  5583. *    cmpi.b    #'_',d0
  5584. *    beq    __num_lp01_
  5585.     bsr    mk_capital
  5586.     sub.b    #$30,d0
  5587.     bmi    num_exit
  5588.     cmp.b    #9,d0
  5589.     bls    calc_hex_
  5590.     cmpi.b    #17,d0
  5591.     bcs    num_exit
  5592.     cmpi.b    #22,d0
  5593.     bhi    num_exit
  5594.     subq.b    #7,d0
  5595. calc_hex_:
  5596.     lsl.l    #4,d1
  5597.     or.b    d0,d1
  5598.     bra    __num_lp01_
  5599. get_binnum_:            *2進数
  5600.     moveq.l    #0,d0
  5601.     moveq.l    #0,d1
  5602.     tst.b    (a2)+
  5603.     beq    num_exit
  5604.     bsr    skip_spc
  5605. b__num_lp01_:
  5606.     move.b    (a2)+,d0
  5607.     beq    num_exit
  5608. *    cmpi.b    #'_',d0
  5609. *    beq    b__num_lp01_
  5610.     cmpi.b    #'0',d0
  5611.     beq    calc_b_num__
  5612.     cmpi.b    #'1',d0
  5613.     bne    num_exit
  5614. calc_b_num__:
  5615.     sub.b    #$30,d0
  5616.     add.l    d1,d1
  5617.     or.b    d0,d1
  5618.     bra    b__num_lp01_
  5619.  
  5620. skip_sep:            *セパレータを1個だけスキップする
  5621.     move.w    d0,-(sp)    *(スペース/タブ/改行は複数スキップする)
  5622. skip_sep_lp:
  5623.     move.b    (a2)+,d0
  5624.     cmpi.b    #' ',d0
  5625.     beq    skip_sep_lp
  5626.     cmpi.b    #09,d0
  5627.     beq    skip_sep_lp
  5628.     cmpi.b    #',',d0
  5629.     beq    exit_ssl
  5630.     subq.w    #1,a2
  5631. exit_ssl:
  5632.     move.w    (sp)+,d0
  5633.     rts
  5634.  
  5635. skip_spc:            *スペースをスキップする
  5636.     move.w    d0,-(sp)
  5637. @@:
  5638.     move.b    (a2)+,d0
  5639.     cmpi.b    #' ',d0
  5640.     beq    @b
  5641.     cmpi.b    #09,d0        *skip tab
  5642.     beq    @b
  5643.     subq.w    #1,a2
  5644. exit_skip_spc:
  5645.     move.w    (sp)+,d0
  5646.     rts
  5647.  
  5648. skip_plus:            *PLUSをスキップする
  5649.     cmpi.b    #'+',(a2)+
  5650.     beq    skip_plus
  5651.     subq.w    #1,a2
  5652.     rts
  5653.  
  5654. mk_capital:            *小文字→大文字(英字以外の場合はそのままthrough out)
  5655.     * < d0.b=letter chr
  5656.     cmpi.b    #'a',d0
  5657.     bcs    exit_mkcptl
  5658.     cmpi.b    #'z',d0
  5659.     bhi    exit_mkcptl
  5660.     andi.w    #$df,d0        *わざと.w
  5661. exit_mkcptl:
  5662.     rts
  5663.  
  5664. cache_flush:                *キャッシュのフラッシュ
  5665.     movem.l    d0-d1,-(sp)
  5666.     moveq.l    #3,d1
  5667.     IOCS    _SYS_STAT
  5668.     movem.l    (sp)+,d0-d1
  5669.     rts
  5670.  
  5671. *go_calc_debug:
  5672. *    moveq.l    #30-1,d0
  5673. *    moveq.l    #0,d1
  5674. *@@:
  5675. *    add.l    -(a0),d1
  5676. *    dbra    d0,@b
  5677. *    divu    #30,d1
  5678. *    move.l    d1,x_count-zsv_work(a6)
  5679. *    trap    #9
  5680.  
  5681.     if    (debug.and.1)
  5682. debug2:                    *デバグ用ルーチン(レジスタ値を表示/割り込み対応)
  5683.     move.w    sr,db_work2-zsv_work(a6)    *save sr    (サブルーチン_get_hex32が必要)
  5684.     ori.w    #$700,sr            *mask int
  5685.     movem.l    d0-d7/a0-a7,db_work-zsv_work(a6)
  5686.  
  5687.     moveq.l    #%0011,d1
  5688.     IOCS    _B_COLOR
  5689.  
  5690.     lea    str__(pc),a1
  5691.  
  5692.     move.w    #$0d0a,(a1)+
  5693.  
  5694.     moveq.l    #8-1,d7
  5695.     lea    db_work(pc),a6
  5696. dbg2_lp01:
  5697.     move.l    (a6)+,d0
  5698.     bsr    _get_hex32
  5699.     addq.w    #8,a1
  5700.     cmpi.b    #4,d7
  5701.     bne    @f
  5702.     move.b    #' ',(a1)+
  5703. @@:
  5704.     move.b    #' ',(a1)+
  5705.     dbra    d7,dbg2_lp01
  5706.  
  5707.     move.b    #$0d,(a1)+
  5708.     move.b    #$0a,(a1)+
  5709.  
  5710.     moveq.l    #8-1,d7
  5711. dbg2_lp02:
  5712.     move.l    (a6)+,d0
  5713.     bsr    _get_hex32
  5714.     addq.w    #8,a1
  5715.     cmpi.b    #4,d7
  5716.     bne    @f
  5717.     move.b    #' ',(a1)+
  5718. @@:
  5719.     move.b    #' ',(a1)+
  5720.     dbra    d7,dbg2_lp02
  5721.  
  5722.     move.l    (a7),d0
  5723.     bsr    _get_hex32
  5724.     addq.w    #8,a1
  5725. *    move.b    #$0d,(a1)+
  5726. *    move.b    #$0a,(a1)+
  5727.     clr.b    (a1)+
  5728.     lea    str__(pc),a1
  5729.     IOCS    _B_PRINT
  5730. *@@:
  5731. *    btst.b    #5,$806.w
  5732. *    bne    @b
  5733.  
  5734.     movem.l    db_work(pc),d0-d7/a0-a7
  5735.     move.w    db_work2(pc),sr    *get back sr
  5736.     rts
  5737.  
  5738. _get_hex32:            *値→16進数文字列(4bytes)
  5739.     * < d0=data value
  5740.     * < a1=格納したいアドレス
  5741.     * > (a1)=ascii numbers
  5742.     * - all
  5743.     movem.l    d0-d1/d4/a1,-(sp)
  5744.     addq.w    #8,a1
  5745.     clr.b    (a1)
  5746.     moveq.l    #8-1,d4
  5747. _gh_lp32:
  5748.     move.b    d0,d1
  5749.     andi.b    #$0f,d1
  5750.     add.b    #$30,d1
  5751.     cmpi.b    #'9',d1
  5752.     bls    _its_hex32
  5753.     addq.b    #7,d1
  5754. _its_hex32:
  5755.     move.b    d1,-(a1)
  5756.     lsr.l    #4,d0
  5757.     dbra    d4,_gh_lp32
  5758.     movem.l    (sp)+,d0-d1/d4/a1
  5759.     rts
  5760.         *デバッグ用ワーク
  5761.     .even
  5762. str__:        ds.b    96*2
  5763. db_work:    dcb.l    16,0        *for debug
  5764. db_work2:    dc.l    0
  5765.         dc.b    'REGI'
  5766.     endif
  5767.  
  5768.     .data
  5769. zsv_work:
  5770. disp_start:    dc.w    0    *表示開始トラック番号
  5771. *velo_buf:    ds.w    1    *Velocity値の一時覚え書き
  5772. chfdr_buf:    ds.w    1    *CH FADERの値の一時覚え書き
  5773. x_count:    ds.l    1
  5774. cpu_power:    ds.l    1
  5775. adr_cnt:    dc.l    30
  5776. adr:        ds.l    1    *!debug
  5777. no_disp_tbl:    ds.b    10    *ZSV.Rの各トラックのステータス(d7:active(1) or dead(0))
  5778. FF_timer:    dc.l    -1    *$ffff0000+高速タイマ(M:$c0,B:$f8,A:$399)
  5779. SL_timer:    dc.l    -1    *$ffff0000+低速タイマ(M:$c0,B:$f8,A:$399)
  5780. mdmsk_k:    dcb.b    4,0
  5781. fadeout_speed:    dc.w    fader_dflt_spd*256
  5782. fadein_speed:    dc.w    fader_dflt_spd*256
  5783. scr_x:        dc.w    0    *表示座標
  5784. scr_y:        dc.w    0
  5785. op_ofs:        dc.w    $00,$10,$08,$18
  5786. dev_tbl:    dc.w    $0000,$0001,$8000,$8001,$8002,$8003
  5787. flash_palet:    dc.w    %11111_11111_11111_1,%01111_01111_01111_0
  5788. dummy_data:    ds.b    128
  5789. arwd_k:        dc.b    0    *        !
  5790.         ds.b    1    *        !
  5791. arwd_krcnt:    dc.b    0    *h_waitカウンタ    !
  5792. arwd_krwork:    dc.b    0    *h_waitkワーク    !
  5793. arwu_k:        dc.b    0    *        #
  5794.         ds.b    1    *        #
  5795. arwu_krcnt:    dc.b    0    *h_waitカウンタ    #
  5796. arwu_krwork:    dc.b    0    *h_waitkワーク    #
  5797. rlu_k:        dc.b    0    *        %
  5798.         ds.b    1    *        %
  5799. rlu_krcnt:    dc.b    0    *h_waitカウンタ    %
  5800. rlu_krwork:    dc.b    0    *h_waitkワーク    %
  5801. rld_k:        dc.b    0    *        $
  5802.         ds.b    1    *        $
  5803. rld_krcnt:    dc.b    0    *h_waitカウンタ    $
  5804. rld_krwork:    dc.b    0    *h_waitkワーク    $
  5805.  
  5806.  
  5807. *byte
  5808. vol_k:        dc.b    0
  5809. pan_k:        dc.b    0
  5810. pan_mode:    dc.b    0    *panpotの表示モード(0:value,1:L/R)
  5811. disp_mode:    dc.b    0    *d0:pmod/arcc/arcc/veloの表示モード(0:depth,1:realtime)
  5812.                 *d1:vol/velo表示モード(0:number,1:bar)
  5813. mod_k:        dc.b    0
  5814. mask_k:        dc.b    0
  5815. mask2_k:    dc.b    0
  5816. home_k:        dc.b    0
  5817. del_k:    dc.b    0
  5818. init_mask:    dc.b    1        *マスクを初期化するか
  5819. dummy_velo:    dc.b    $80        *Default Velocity code
  5820. *v_count:    ds.b    1
  5821. fmmsk_k:    ds.b    1
  5822. admsk_k:    ds.b    1
  5823. bank_k:        ds.b    1
  5824. bank_mode:    dc.b    2
  5825. play_k:        dc.b    0
  5826. stop_k:        dc.b    0
  5827. stop_mode:    dc.b    0
  5828. cont_k:        dc.b    0
  5829. fadein_k:    dc.b    0
  5830. fadeout_k:    dc.b    0
  5831. _FF_flg:    dc.b    0
  5832. _SLOW_flg:    dc.b    0
  5833. lang:        dc.b    0    *言語モード(0:English,1:Japanese)
  5834. opmmap_flg:    dc.b    0    *[0]非表示 1:表示
  5835. ext_palet:    dc.b    0    *外部パレット使用か
  5836.  
  5837. z_err_mes:    dc.b    'ZSV.R COULD NOT RECOGNIZE ZMUSIC Ver.3.0.',13,10,0
  5838. version_mes:    dc.b    'ZSV.R RUNS ON ZMUSIC SYSTEM VERSION 3.00 AND OVER.',13,10,0
  5839. mem_mes:    dc.b    'OUT OF MEMORY.',13,10,0
  5840. fnf_err_mes:    dc.b    'FILE NOT FOUND.',13,10,0
  5841. title_mes:    dc.b    'ZMUSIC STATUS VIEWER '
  5842.         dc.b    $F3,'V',$F3,'E',$F3,'R',$F3,'S',$F3,'I',$F3,'O',$F3,'N'
  5843. *        zsv_version
  5844. *        test
  5845.         version
  5846.         TEST
  5847.         dc.b    ' (C) 1996,97 '
  5848.         dc.b    'ZENJI SOFT',13,10,0
  5849. zsv_ver:    _version
  5850.         dc.b    0
  5851. no_title:    dc.b    'NO TITLE',0
  5852. init_color:    dc.b    $1b,'[m',$00,$00
  5853. colon:        dc.b    ':',0
  5854. Status:        dc.b    'STATUS:',0
  5855. Timbre:        dc.b    'TIMBRE:',0
  5856. no_bank:    dc.b    '     ',0
  5857. zp_key:        dc.b    'zp3_keyctrl',0
  5858. key_tbl_db:    dc.b    $0e,$0b,$0e,$2e,$0e,$3e,$0e,$1b,$0e,$7a,$0e,$5a,$0e,$6a
  5859.     *                   1         2         3         4         5         6         7         8         9     
  5860.     *             012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345
  5861. common1_tbl:    dc.b    'METER:/KEY:TEMPO:PLAYTIME:::/:://()::',0
  5862. common2_tbl:    dc.b    'AGOGIK:WAVE:VARIANT:REPEAT:',0
  5863. common3_tbl:    dc.b    'FMOPM:ADPCM:MIDI1:MIDI2:MIDI3:MIDI4:SYSTEM:Z-MUSIC .',0
  5864. common4_tbl:    dc.b    'FADER:FADER:FADER:FADER:FADER:FADER:TIMER:',0
  5865. track_tbl1:    dc.b    'DEADCH.FADER:',0
  5866. track_tbl2:    dc.b    'VOLUME:VELOCITY:DETUNE:PITCH:AFTER:HOLD: PAN:',0
  5867. track_tbl3:    dc.b    'ARCC1:WAVE:VARIANT:CTRL:VIBRATO:WAVE:VARIANT:',0
  5868. track_tbl4:    dc.b    'ARCC2:WAVE:VARIANT:CTRL:VELOCITY.SEQ:WAVE:VARIANT:',0
  5869. track_tbl5:    dc.b    'ARCC3:WAVE:VARIANT:CTRL:',0
  5870. track_tbl6:    dc.b    'ARCC4:WAVE:VARIANT:CTRL:',0
  5871.  
  5872. FMttlg0:    dc.b    ' CLK-A:     CLK-B:    R14:      ',0
  5873. FMttlg1:    dc.b    ' NE:  NFRQ:                     ',0
  5874. FMttlg2:    dc.b    ' WF:  LFRQ:    PMD:    AMD:     ',0
  5875. FMttl0:        dc.b    '     AL:  FB:  PMS:  AMS:  PAN: ',0
  5876. FMttl1:        dc.b    ' AR DR SR RR SL  TL K ML D1 D2 A',0
  5877. FMchn:        dc.b    'FM ',0
  5878.  
  5879. x_zahyo:
  5880.     dc.b    0    *TR
  5881.     dc.b    3    *DEVICE
  5882.     dc.b    10    *PRG
  5883.     dc.b    14    *VOL
  5884.     dc.b    18    *VEL
  5885.     dc.b    22    *PAN
  5886.     dc.b    25    *DETNE
  5887.     dc.b    31    *P.MOD
  5888.     dc.b    37    *ARC
  5889.     dc.b    41    *A.BND
  5890.     dc.b    48    *AFT
  5891.     dc.b    51    *PRT
  5892.     dc.b    58    *FDO
  5893.     dc.b    62    *DP
  5894.     dc.b    65    *NT1
  5895.     dc.b    69    *NT2
  5896.     dc.b    73    *NT3
  5897.     dc.b    77    *NT4
  5898.     dc.b    81    *NT5
  5899.     dc.b    85    *NT6
  5900.     dc.b    89    *NT7
  5901.     dc.b    93    *NT8
  5902.  
  5903. ch_fm:        dc.b    'FMOPM    ',0
  5904. ch_ad:        dc.b    'ADPCM    ',0
  5905. ch_md:        dc.b    'MIDI0 -  ',0
  5906. ch_vanish:    dc.b    '         ',0
  5907.  
  5908. KEY_tbl:    dc.b    'Cmajor ',0
  5909.         dc.b    'Gmajor ',0
  5910.         dc.b    'Dmajor ',0
  5911.         dc.b    'Amajor ',0
  5912.         dc.b    'Emajor ',0
  5913.         dc.b    'Bmajor ',0
  5914.         dc.b    'F+major',0
  5915.         dc.b    'C+major',0
  5916.         dc.b    'Cmajor ',0
  5917.         dc.b    'Fmajor ',0
  5918.         dc.b    'B-major',0
  5919.         dc.b    'E-major',0
  5920.         dc.b    'A-major',0
  5921.         dc.b    'D-major',0
  5922.         dc.b    'G-major',0
  5923.         dc.b    'C-major',0
  5924.         dc.b    'Aminor ',0
  5925.         dc.b    'Eminor ',0
  5926.         dc.b    'Bminor ',0
  5927.         dc.b    'F+minor',0
  5928.         dc.b    'C+minor',0
  5929.         dc.b    'G+minor',0
  5930.         dc.b    'D+minor',0
  5931.         dc.b    'A+minor',0
  5932.         dc.b    'Aminor ',0
  5933.         dc.b    'Dminor ',0
  5934.         dc.b    'Gminor ',0
  5935.         dc.b    'Cminor ',0
  5936.         dc.b    'Fminor ',0
  5937.         dc.b    'B-minor',0
  5938.         dc.b    'E-minor',0
  5939.         dc.b    'A-minor',0
  5940. non_key:    dc.b    '-------',0
  5941.  
  5942. WAVE_tbl:    dc.b    'SAW  ',0,0,0
  5943.         dc.b    'SQR  ',0,0,0
  5944.         dc.b    'TRI  ',0,0,0
  5945.         dc.b    'S.SAW',0,0,0
  5946.         dc.b    'RND  ',0,0,0
  5947. DUMMY_wf:    dc.b    'NONE ',0,0,0
  5948.  
  5949. DAY_tbl:    dc.b    'SUN',0
  5950.         dc.b    'MON',0
  5951.         dc.b    'TUE',0
  5952.         dc.b    'WED',0
  5953.         dc.b    'THU',0
  5954.         dc.b    'FRI',0
  5955.         dc.b    'SAT',0
  5956.  
  5957. trkmd_PTRN:    dc.b    'PATTERN',0
  5958. trkmd_NORMAL:    dc.b    'ACTIVE ',0
  5959. trkmd_DEAD:    dc.b    'DEAD   ',0
  5960. trkmd_END:    dc.b    'END    ',0
  5961. trkmd_STOP:    dc.b    'STOP   ',0
  5962. trkmd_SYNC:    dc.b    'WAITING',0
  5963. trkmd_REC:    dc.b    'RECORD ',0
  5964. trkmd_SE:    dc.b    'EFFECT ',0
  5965. trkmd_MASK:    dc.b    'MASKED ',0
  5966. trkmd_Vanish:    dc.b    '       ',0
  5967.  
  5968. trim_vanish:    dc.b    '   ',0
  5969. timbre_bkspc:    dc.b    '      ',0
  5970. off_str:
  5971. aftc_off:    dc.b    'OFF',0
  5972. TIE_str:    dc.b    '*****',0
  5973. zsv_opt:    dc.b    'zsv_opt',0
  5974. zmsc3_fader:    dc.b    'zmsc3_fader',0
  5975. hlp_mes:    dc.b    '-I     Start with preserving the mask.',13,10
  5976.         dc.b    '-J     Messages will be displayed in Japanese.',13,10
  5977.         dc.b    '-P     Display the panpot value from L64-L1,0,R1-R64.',13,10
  5978.         dc.b    '-R     Display the modulation value in realtime.',13,10
  5979.         dc.b    0
  5980.         dc.b    '-I     マスクを保存して起動する',13,10
  5981.         dc.b    '-J     日本語メッセージ表示',13,10
  5982.         dc.b    '-P     パンポットをL64-1,0,R1-64の範囲で表示する',13,10
  5983.         dc.b    '-R     モジュレーションの値をリアルタイム表示する',13,10
  5984.         dc.b    0
  5985. arcc_op:    dc.b    '1',0
  5986.         dc.b    '2',0
  5987.         dc.b    '3',0
  5988.         dc.b    '4',0
  5989. fm_arcc_tbl:    dc.b    'PAN ',0
  5990.         dc.b    'PMS ',0
  5991.         dc.b    'AMS ',0
  5992.         dc.b    '??? ',0
  5993.         dc.b    'AMD ',0
  5994.         dc.b    'PMD ',0
  5995.         dc.b    'SPD ',0
  5996.         dc.b    'NSE ',0
  5997. Vanish_volvelo:    dc.b    '    ',0
  5998. Vanish_ctrl:    dc.b    '    ',0
  5999. DUMMY_ctrl:    dc.b    'NONE',0
  6000.  
  6001. Question_velo:    dc.b    '???',0
  6002. Vanish_nn:    dc.b    '                    '
  6003. Vanish_cmd:    dc.b    '                     ',0
  6004. Portament_nn:    dc.b    ' PORTAMENT TO        ',0
  6005. Rest_nn:    dc.b    'REST',0
  6006. Rest_velo:    dc.b    '000',0
  6007. Dummy_gate    dc.b    '00000',0
  6008. Wait_nn:    dc.b    'WAIT',0
  6009.         .even
  6010. exp_tbl:
  6011.     dc.l    1000000000
  6012.     dc.l    100000000
  6013.     dc.l    10000000
  6014.     dc.l    1000000
  6015.     dc.l    100000
  6016.     dc.l    10000
  6017.     dc.l    1000
  6018.     dc.l    100
  6019.     dc.l    10
  6020.     dc.l    1
  6021.  
  6022. KEY_v_tbl:
  6023.     dc.b    0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
  6024.     dc.b    0,0,-1,0,-2,0,-3,0,-4,0,-5,0,-6,0,-7,0
  6025.     dc.b    0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1
  6026.     dc.b    0,1,-1,1,-2,1,-3,1,-4,1,-5,1,-6,1,-7,1
  6027.     .even
  6028.         *1       2       3       4       
  6029. kbd_ptn1:    *12345678123456781234567812345678
  6030.     dc.l    %11100011000111011100011000110001
  6031.     dc.l    %11011100011000111011100011000110
  6032.     dc.l    %00111011100011000111011100011000
  6033.     dc.l    %11000111011100011000111011100011
  6034.     dc.l    %00011000111011100011000111011100
  6035.     dc.l    %01100011000111011100011000111011
  6036.     dc.l    %10001100011000111011100011000111
  6037.     dc.l    %01110001100011000111011100011000
  6038.     dc.l    %11101110001100011000111011100011
  6039.     dc.l    %00011101110001100011000111011100
  6040.     dc.l    %01100011101110001100011000111011
  6041.     dc.l    %10001100011101110001110000000000
  6042. kbd_ptn2:
  6043.     dc.l    %11110111101111011110111101111011
  6044.     dc.l    %11011110111101111011110111101111
  6045.     dc.l    %01111011110111101111011110111101
  6046.     dc.l    %11101111011110111101111011110111
  6047.     dc.l    %10111101111011110111101111011110
  6048.     dc.l    %11110111101111011110111101111011
  6049.     dc.l    %11011110111101111011110111101111
  6050.     dc.l    %01111011110111101111011110111101
  6051.     dc.l    %11101111011110111101111011110111
  6052.     dc.l    %10111101111011110111101111011110
  6053.     dc.l    %11110111101111011110111101111011
  6054.     dc.l    %11011110111101111011110000000000
  6055. *kbd_ptn3:
  6056. *    dc.l    %11100011000110001100011000110001
  6057. *    dc.l    %10001100011000110001100011000110
  6058. *    dc.l    %00110001100011000110001100011000
  6059. *    dc.l    %11000110001100011000110001100011
  6060. *    dc.l    %00011000110001100011000110001100
  6061. *    dc.l    %01100011000110001100011000110001
  6062. *    dc.l    %10001100011000110001100011000110
  6063. *    dc.l    %00110001100011000110001100011000
  6064. *    dc.l    %11000110001100011000110001100011
  6065. *    dc.l    %00011000110001100011000110001100
  6066. *    dc.l    %01100011000110001100011000110001
  6067. *    dc.l    %10001100011000110001110000000000
  6068.           *1       2       
  6069. kon_ptn1:       *1234567812345678
  6070.     dc.w    00,%1110000000000000    *C
  6071.     dc.w    00,%0001110000000000    *C#
  6072.     dc.w    00,%0000001100000000    *D
  6073.     dc.w    00,%0000000011100000    *D#
  6074.     dc.w    00,%0000000000011100    *E
  6075.     dc.w    01,%0000000111000000    *F
  6076.     dc.w    01,%0000000000111000    *F#
  6077.     dc.w    01,%0000000000000110    *G
  6078.     dc.w    02,%0000000111000000    *G#
  6079.     dc.w    02,%0000000000110000    *A
  6080.     dc.w    02,%0000000000001110    *A#
  6081.     dc.w    03,%0000000111000000    *B
  6082.     dc.w    03,%0000000000011100    *C
  6083.     dc.w    04,%0000001110000000    *C#
  6084.     dc.w    04,%0000000001100000    *D
  6085.     dc.w    04,%0000000000011100    *D#
  6086.     dc.w    05,%0000001110000000    *E
  6087.     dc.w    05,%0000000000111000    *F
  6088.     dc.w    05,%0000000000000111    *F#
  6089.     dc.w    07,%1100000000000000    *G
  6090.     dc.w    07,%0011100000000000    *G#
  6091.     dc.w    07,%0000011000000000    *A
  6092.     dc.w    07,%0000000111000000    *A#
  6093.     dc.w    07,%0000000000111000    *B
  6094.     dc.w    08,%0000001110000000    *C
  6095.     dc.w    08,%0000000001110000    *C#
  6096.     dc.w    08,%0000000000001100    *D
  6097.     dc.w    09,%0000001110000000    *D#
  6098.     dc.w    09,%0000000001110000    *E
  6099.     dc.w    09,%0000000000000111    *F
  6100.     dc.w    11,%1110000000000000    *F#
  6101.     dc.w    11,%0001100000000000    *G
  6102.     dc.w    11,%0000011100000000    *G#
  6103.     dc.w    11,%0000000011000000    *A
  6104.     dc.w    11,%0000000000111000    *A#
  6105.     dc.w    11,%0000000000000111    *B
  6106.     dc.w    13,%0111000000000000    *C
  6107.     dc.w    13,%0000111000000000    *C#
  6108.     dc.w    13,%0000000110000000    *D
  6109.     dc.w    13,%0000000001110000    *D#
  6110.     dc.w    13,%0000000000001110    *E
  6111.     dc.w    15,%1110000000000000    *F
  6112.     dc.w    15,%0001110000000000    *F#
  6113.     dc.w    15,%0000001100000000    *G
  6114.     dc.w    15,%0000000011100000    *G#
  6115.     dc.w    15,%0000000000011000    *A
  6116.     dc.w    15,%0000000000000111    *A#
  6117.     dc.w    17,%1110000000000000    *B
  6118.     dc.w    17,%0000111000000000    *C
  6119.     dc.w    17,%0000000111000000    *C#
  6120.     dc.w    17,%0000000000110000    *D
  6121.     dc.w    17,%0000000000001110    *D#
  6122.     dc.w    18,%0000000111000000    *E
  6123.     dc.w    18,%0000000000011100    *F
  6124.     dc.w    19,%0000001110000000    *F#
  6125.     dc.w    19,%0000000001100000    *G
  6126.     dc.w    19,%0000000000011100    *G#
  6127.     dc.w    19,%0000000000000011    *A
  6128.     dc.w    21,%1110000000000000    *A#
  6129.     dc.w    21,%0001110000000000    *B
  6130.     dc.w    21,%0000000111000000    *C
  6131.     dc.w    21,%0000000000111000    *C#
  6132.     dc.w    21,%0000000000000110    *D
  6133.     dc.w    22,%0000000111000000    *D#
  6134.     dc.w    22,%0000000000111000    *E
  6135.     dc.w    23,%0000001110000000    *F
  6136.     dc.w    23,%0000000001110000    *F#
  6137.     dc.w    23,%0000000000001100    *G
  6138.     dc.w    24,%0000001110000000    *G#
  6139.     dc.w    24,%0000000001100000    *A
  6140.     dc.w    24,%0000000000011100    *A#
  6141.     dc.w    25,%0000001110000000    *B
  6142.     dc.w    25,%0000000000111000    *C
  6143.     dc.w    25,%0000000000000111    *C#
  6144.     dc.w    27,%1100000000000000    *D
  6145.     dc.w    27,%0011100000000000    *D#
  6146.     dc.w    27,%0000011100000000    *E
  6147.     dc.w    27,%0000000001110000    *F
  6148.     dc.w    27,%0000000000001110    *F#
  6149.     dc.w    28,%0000000110000000    *G
  6150.     dc.w    28,%0000000001110000    *G#
  6151.     dc.w    28,%0000000000001100    *A
  6152.     dc.w    29,%0000001110000000    *A#
  6153.     dc.w    29,%0000000001110000    *B
  6154.     dc.w    29,%0000000000000111    *C
  6155.     dc.w    31,%1110000000000000    *C#
  6156.     dc.w    31,%0001100000000000    *D
  6157.     dc.w    31,%0000011100000000    *D#
  6158.     dc.w    31,%0000000011100000    *E
  6159.     dc.w    31,%0000000000001110    *F
  6160.     dc.w    32,%0000000111000000    *F#
  6161.     dc.w    32,%0000000000110000    *G
  6162.     dc.w    32,%0000000000001110    *G#
  6163.     dc.w    33,%0000000110000000    *A
  6164.     dc.w    33,%0000000001110000    *A#
  6165.     dc.w    33,%0000000000001110    *B
  6166.     dc.w    35,%1110000000000000    *C
  6167.     dc.w    35,%0001110000000000    *C#
  6168.     dc.w    35,%0000001100000000    *D
  6169.     dc.w    35,%0000000011100000    *D#
  6170.     dc.w    35,%0000000000011100    *E
  6171.     dc.w    36,%0000000111000000    *F
  6172.     dc.w    36,%0000000000111000    *F#
  6173.     dc.w    36,%0000000000000110    *G
  6174.     dc.w    37,%0000000111000000    *G#
  6175.     dc.w    37,%0000000000110000    *A
  6176.     dc.w    37,%0000000000001110    *A#
  6177.     dc.w    38,%0000000111000000    *B
  6178.     dc.w    38,%0000000000011100    *C
  6179.     dc.w    39,%0000001110000000    *C#
  6180.     dc.w    39,%0000000001100000    *D
  6181.     dc.w    39,%0000000000011100    *D#
  6182.     dc.w    40,%0000001110000000    *E
  6183.     dc.w    40,%0000000000111000    *F
  6184.     dc.w    40,%0000000000000111    *F#
  6185.     dc.w    42,%1100000000000000    *G
  6186.     dc.w    42,%0011100000000000    *G#
  6187.     dc.w    42,%0000011000000000    *A
  6188.     dc.w    42,%0000000111000000    *A#
  6189.     dc.w    42,%0000000000111000    *B
  6190.     dc.w    43,%0000001110000000    *C
  6191.     dc.w    43,%0000000001110000    *C#
  6192.     dc.w    43,%0000000000001100    *D
  6193.     dc.w    44,%0000001110000000    *D#
  6194.     dc.w    44,%0000000001110000    *E
  6195.     dc.w    44,%0000000000000111    *F
  6196.     dc.w    46,%1110000000000000    *F#
  6197.     dc.w    46,%0001110000000000    *G
  6198. kon_ptn2:
  6199.     *           1234567812345678
  6200.     dc.w    00,%1111000000000000    *C
  6201.     dc.w    -1,%0000000000000000    *C#
  6202.     dc.w    00,%0000011110000000    *D
  6203.     dc.w    -1,%0000000000000000    *D#
  6204.     dc.w    00,%0000000000111100    *E
  6205.     dc.w    01,%0000000111100000    *F
  6206.     dc.w    -1,%0000000000000000    *F#
  6207.     dc.w    01,%0000000000001111    *G
  6208.     dc.w    -1,%0000000000000000    *G#
  6209.     dc.w    03,%0111100000000000    *A
  6210.     dc.w    -1,%0000000000000000    *A#
  6211.     dc.w    03,%0000001111000000    *B
  6212.     dc.w    03,%0000000000011110    *C
  6213.     dc.w    -1,%0000000000000000    *C#
  6214.     dc.w    05,%1111000000000000    *D
  6215.     dc.w    -1,%0000000000000000    *D#
  6216.     dc.w    05,%0000011110000000    *E
  6217.     dc.w    05,%0000000000111100    *F
  6218.     dc.w    -1,%0000000000000000    *F#
  6219.     dc.w    06,%0000000111100000    *G
  6220.     dc.w    -1,%0000000000000000    *G#
  6221.     dc.w    06,%0000000000001111    *A
  6222.     dc.w    -1,%0000000000000000    *A#
  6223.     dc.w    08,%0111100000000000    *B
  6224.     dc.w    08,%0000001111000000    *C
  6225.     dc.w    -1,%0000000000000000    *C#
  6226.     dc.w    08,%0000000000011110    *D
  6227.     dc.w    -1,%0000000000000000    *D#
  6228.     dc.w    10,%1111000000000000    *E
  6229.     dc.w    10,%0000011110000000    *F
  6230.     dc.w    -1,%0000000000000000    *F#
  6231.     dc.w    10,%0000000000111100    *G
  6232.     dc.w    -1,%0000000000000000    *G#
  6233.     dc.w    11,%0000000111100000    *A
  6234.     dc.w    -1,%0000000000000000    *A#
  6235.     dc.w    11,%0000000000001111    *B
  6236.     dc.w    13,%0111100000000000    *C
  6237.     dc.w    -1,%0000000000000000    *C#
  6238.     dc.w    13,%0000001111000000    *D
  6239.     dc.w    -1,%0000000000000000    *D#
  6240.     dc.w    13,%0000000000011110    *E
  6241.     dc.w    15,%1111000000000000    *F
  6242.     dc.w    -1,%0000000000000000    *F#
  6243.     dc.w    15,%0000011110000000    *G
  6244.     dc.w    -1,%0000000000000000    *G#
  6245.     dc.w    15,%0000000000111100    *A
  6246.     dc.w    -1,%0000000000000000    *A#
  6247.     dc.w    16,%0000000111100000    *B
  6248.     dc.w    16,%0000000000001111    *C
  6249.     dc.w    -1,%0000000000000000    *C#
  6250.     dc.w    18,%0111100000000000    *D
  6251.     dc.w    -1,%0000000000000000    *D#
  6252.     dc.w    18,%0000001111000000    *E
  6253.     dc.w    18,%0000000000011110    *F
  6254.     dc.w    -1,%0000000000000000    *F#
  6255.     dc.w    20,%1111000000000000    *G
  6256.     dc.w    -1,%0000000000000000    *G#
  6257.     dc.w    20,%0000011110000000    *A
  6258.     dc.w    -1,%0000000000000000    *A#
  6259.     dc.w    20,%0000000000111100    *B
  6260.     dc.w    21,%0000000111100000    *C
  6261.     dc.w    -1,%0000000000000000    *C#
  6262.     dc.w    21,%0000000000001111    *D
  6263.     dc.w    -1,%0000000000000000    *D#
  6264.     dc.w    23,%0111100000000000    *E
  6265.     dc.w    23,%0000001111000000    *F
  6266.     dc.w    -1,%0000000000000000    *F#
  6267.     dc.w    23,%0000000000011110    *G
  6268.     dc.w    -1,%0000000000000000    *G#
  6269.     dc.w    25,%1111000000000000    *A
  6270.     dc.w    -1,%0000000000000000    *A#
  6271.     dc.w    25,%0000011110000000    *B
  6272.     dc.w    25,%0000000000111100    *C
  6273.     dc.w    -1,%0000000000000000    *C#
  6274.     dc.w    26,%0000000111100000    *D
  6275.     dc.w    -1,%0000000000000000    *D#
  6276.     dc.w    26,%0000000000001111    *E
  6277.     dc.w    28,%0111100000000000    *F
  6278.     dc.w    -1,%0000000000000000    *F#
  6279.     dc.w    28,%0000001111000000    *G
  6280.     dc.w    -1,%0000000000000000    *G#
  6281.     dc.w    28,%0000000000011110    *A
  6282.     dc.w    -1,%0000000000000000    *A#
  6283.     dc.w    30,%1111000000000000    *B
  6284.     dc.w    30,%0000011110000000    *C
  6285.     dc.w    -1,%0000000000000000    *C#
  6286.     dc.w    30,%0000000000111100    *D
  6287.     dc.w    -1,%0000000000000000    *D#
  6288.     dc.w    31,%0000000111100000    *E
  6289.     dc.w    31,%0000000000001111    *F
  6290.     dc.w    -1,%0000000000000000    *F#
  6291.     dc.w    33,%0111100000000000    *G
  6292.     dc.w    -1,%0000000000000000    *G#
  6293.     dc.w    33,%0000001111000000    *A
  6294.     dc.w    -1,%0000000000000000    *A#
  6295.     dc.w    33,%0000000000011110    *B
  6296.     dc.w    35,%1111000000000000    *C
  6297.     dc.w    -1,%0000000000000000    *C#
  6298.     dc.w    35,%0000011110000000    *D
  6299.     dc.w    -1,%0000000000000000    *D#
  6300.     dc.w    35,%0000000000111100    *E
  6301.     dc.w    36,%0000000111100000    *F
  6302.     dc.w    -1,%0000000000000000    *F#
  6303.     dc.w    36,%0000000000001111    *G
  6304.     dc.w    -1,%0000000000000000    *G#
  6305.     dc.w    38,%0111100000000000    *A
  6306.     dc.w    -1,%0000000000000000    *A#
  6307.     dc.w    38,%0000001111000000    *B
  6308.     dc.w    38,%0000000000011110    *C
  6309.     dc.w    -1,%0000000000000000    *C#
  6310.     dc.w    40,%1111000000000000    *D
  6311.     dc.w    -1,%0000000000000000    *D#
  6312.     dc.w    40,%0000011110000000    *E
  6313.     dc.w    40,%0000000000111100    *F
  6314.     dc.w    -1,%0000000000000000    *F#
  6315.     dc.w    41,%0000000111100000    *G
  6316.     dc.w    -1,%0000000000000000    *G#
  6317.     dc.w    41,%0000000000001111    *A
  6318.     dc.w    -1,%0000000000000000    *A#
  6319.     dc.w    43,%0111100000000000    *B
  6320.     dc.w    43,%0000001111000000    *C
  6321.     dc.w    -1,%0000000000000000    *C#
  6322.     dc.w    43,%0000000000011110    *D
  6323.     dc.w    -1,%0000000000000000    *D#
  6324.     dc.w    45,%1111000000000000    *E
  6325.     dc.w    45,%0000011110000000    *F
  6326.     dc.w    -1,%0000000000000000    *F#
  6327.     dc.w    45,%0000000000111100    *G
  6328.  
  6329. lamp_pat:
  6330.     dc.b    %00000000
  6331.     dc.b    %00011000
  6332.     dc.b    %00111100
  6333.     dc.b    %01111110
  6334.     dc.b    %01111110
  6335.     dc.b    %00111100
  6336.     dc.b    %00011000
  6337.     dc.b    %00000000
  6338.  
  6339. hbar_data:
  6340.     dc.l    %00000000000000000000000000000000
  6341.     dc.l    %10000000000000000000000000000000
  6342.     dc.l    %11000000000000000000000000000000
  6343.     dc.l    %11100000000000000000000000000000
  6344.     dc.l    %11110000000000000000000000000000
  6345.     dc.l    %11111000000000000000000000000000
  6346.     dc.l    %11111100000000000000000000000000
  6347.     dc.l    %11111110000000000000000000000000
  6348.     dc.l    %11111111000000000000000000000000
  6349.     dc.l    %11111111100000000000000000000000
  6350.     dc.l    %11111111110000000000000000000000
  6351.     dc.l    %11111111111000000000000000000000
  6352.     dc.l    %11111111111100000000000000000000
  6353.     dc.l    %11111111111110000000000000000000
  6354.     dc.l    %11111111111111000000000000000000
  6355.     dc.l    %11111111111111100000000000000000
  6356.     dc.l    %11111111111111110000000000000000
  6357.     dc.l    %11111111111111111000000000000000
  6358.     dc.l    %11111111111111111100000000000000
  6359.     dc.l    %11111111111111111110000000000000
  6360.     dc.l    %11111111111111111111000000000000
  6361.     dc.l    %11111111111111111111100000000000
  6362.     dc.l    %11111111111111111111110000000000
  6363.     dc.l    %11111111111111111111111000000000
  6364.     dc.l    %11111111111111111111111100000000
  6365.     dc.l    %11111111111111111111111110000000
  6366.     dc.l    %11111111111111111111111111000000
  6367.     dc.l    %11111111111111111111111111100000
  6368.     dc.l    %11111111111111111111111111110000
  6369.     dc.l    %11111111111111111111111111111000
  6370.     dc.l    %11111111111111111111111111111100
  6371.     dc.l    %11111111111111111111111111111110
  6372.     dc.l    %11111111111111111111111111111111
  6373.  
  6374. std_palet:
  6375.     dc.w    %00000_00000_00000_0    *テキストパレットの設定%0000    *black
  6376.     dc.w    %01111_00000_00100_0    *テキストパレットの設定%0001    *dark kon
  6377.     dc.w    %11100_11000_11100_1    *テキストパレットの設定%0010    *trkprm'
  6378.     dc.w    %11100_11100_11100_1    *テキストパレットの設定%0011    *white char
  6379.     dc.w    %11111_00000_01000_0    *テキストパレットの設定%0100    *key on
  6380.     dc.w    %11000_11111_00000_1    *テキストパレットの設定%0101    *trim'
  6381.     dc.w    %11111_00000_10100_0    *テキストパレットの設定%0110    *key on
  6382.     dc.w    %11111_00000_10100_1    *テキストパレットの設定%0111    *key on
  6383.     dc.w    %10000_10000_10000_1    *テキストパレットの設定%1000    *mix scale
  6384.     dc.w    %00000_11111_00000_1    *テキストパレットの設定%1001    *red
  6385.     dc.w    %01111_01111_01111_0    *テキストパレットの設定%1010    *dark
  6386.     dc.w    %01111_00000_01010_0    *テキストパレットの設定%1011    *dark kon
  6387.     dc.w    %11111_11111_00000_1    *テキストパレットの設定%1100    *yellow
  6388.     dc.w    %11000_11111_00000_1    *テキストパレットの設定%1101    *trim
  6389.     dc.w    %11111_00000_11111_1    *テキストパレットの設定%1110    *cyan
  6390.     dc.w    %01111_01111_01111_0    *テキストパレットの設定%1111    *flash
  6391.  
  6392. pantrim0:
  6393.     .dc.b    $00,$00,$03,$c0,$0c,$30,$10,$08,$20,$04,$20,$04,$40,$02,$40,$02
  6394.     .dc.b    $40,$02,$40,$02,$20,$04,$20,$04,$10,$08,$0c,$30,$03,$c0,$00,$00
  6395. pantrim_tbl:
  6396.     .dc.b    $00,$00,$03,$c0,$0c,$30,$10,$08,$20,$04,$20,$04,$40,$02,$40,$02
  6397.     .dc.b    $40,$02,$40,$02,$2c,$04,$3c,$04,$18,$08,$0c,$30,$03,$c0,$00,$00
  6398.     .dc.b    $00,$00,$03,$c0,$0c,$30,$10,$08,$20,$04,$20,$04,$40,$02,$40,$02
  6399.     .dc.b    $40,$02,$48,$02,$38,$04,$30,$04,$10,$08,$0c,$30,$03,$c0,$00,$00
  6400.     .dc.b    $00,$00,$03,$c0,$0c,$30,$10,$08,$20,$04,$20,$04,$40,$02,$40,$02
  6401.     .dc.b    $48,$02,$78,$02,$30,$04,$20,$04,$10,$08,$0c,$30,$03,$c0,$00,$00
  6402.     .dc.b    $00,$00,$03,$c0,$0c,$30,$10,$08,$20,$04,$20,$04,$40,$02,$78,$02
  6403.     .dc.b    $78,$02,$40,$02,$20,$04,$20,$04,$10,$08,$0c,$30,$03,$c0,$00,$00
  6404.     .dc.b    $00,$00,$03,$c0,$0c,$30,$10,$08,$20,$04,$30,$04,$78,$02,$48,$02
  6405.     .dc.b    $40,$02,$40,$02,$20,$04,$20,$04,$10,$08,$0c,$30,$03,$c0,$00,$00
  6406.     .dc.b    $00,$00,$03,$c0,$0c,$30,$10,$08,$30,$04,$38,$04,$48,$02,$40,$02
  6407.     .dc.b    $40,$02,$40,$02,$20,$04,$20,$04,$10,$08,$0c,$30,$03,$c0,$00,$00
  6408.     .dc.b    $00,$00,$03,$c0,$0c,$30,$18,$08,$3c,$04,$2c,$04,$40,$02,$40,$02
  6409.     .dc.b    $40,$02,$40,$02,$20,$04,$20,$04,$10,$08,$0c,$30,$03,$c0,$00,$00
  6410.     .dc.b    $00,$00,$03,$c0,$0c,$30,$1c,$08,$26,$04,$20,$04,$40,$02,$40,$02
  6411.     .dc.b    $40,$02,$40,$02,$20,$04,$20,$04,$10,$08,$0c,$30,$03,$c0,$00,$00
  6412.     .dc.b    $00,$00,$03,$c0,$0e,$30,$16,$08,$23,$04,$20,$04,$40,$02,$40,$02
  6413.     .dc.b    $40,$02,$40,$02,$20,$04,$20,$04,$10,$08,$0c,$30,$03,$c0,$00,$00
  6414.     .dc.b    $00,$00,$03,$c0,$0d,$b0,$11,$88,$21,$84,$20,$04,$40,$02,$40,$02
  6415.     .dc.b    $40,$02,$40,$02,$20,$04,$20,$04,$10,$08,$0c,$30,$03,$c0,$00,$00
  6416.     .dc.b    $00,$00,$03,$c0,$0c,$70,$10,$68,$20,$c4,$20,$04,$40,$02,$40,$02
  6417.     .dc.b    $40,$02,$40,$02,$20,$04,$20,$04,$10,$08,$0c,$30,$03,$c0,$00,$00
  6418.     .dc.b    $00,$00,$03,$c0,$0c,$30,$10,$38,$20,$64,$20,$04,$40,$02,$40,$02
  6419.     .dc.b    $40,$02,$40,$02,$20,$04,$20,$04,$10,$08,$0c,$30,$03,$c0,$00,$00
  6420.     .dc.b    $00,$00,$03,$c0,$0c,$30,$10,$18,$20,$3c,$20,$34,$40,$02,$40,$02
  6421.     .dc.b    $40,$02,$40,$02,$20,$04,$20,$04,$10,$08,$0c,$30,$03,$c0,$00,$00
  6422.     .dc.b    $00,$00,$03,$c0,$0c,$30,$10,$08,$20,$0c,$20,$1c,$40,$12,$40,$02
  6423.     .dc.b    $40,$02,$40,$02,$20,$04,$20,$04,$10,$08,$0c,$30,$03,$c0,$00,$00
  6424.     .dc.b    $00,$00,$03,$c0,$0c,$30,$10,$08,$20,$04,$20,$0c,$40,$1e,$40,$12
  6425.     .dc.b    $40,$02,$40,$02,$20,$04,$20,$04,$10,$08,$0c,$30,$03,$c0,$00,$00
  6426.     .dc.b    $00,$00,$03,$c0,$0c,$30,$10,$08,$20,$04,$20,$04,$40,$02,$40,$1e
  6427.     .dc.b    $40,$1e,$40,$02,$20,$04,$20,$04,$10,$08,$0c,$30,$03,$c0,$00,$00
  6428.     .dc.b    $00,$00,$03,$c0,$0c,$30,$10,$08,$20,$04,$20,$04,$40,$02,$40,$02
  6429.     .dc.b    $40,$12,$40,$1e,$20,$0c,$20,$04,$10,$08,$0c,$30,$03,$c0,$00,$00
  6430.     .dc.b    $00,$00,$03,$c0,$0c,$30,$10,$08,$20,$04,$20,$04,$40,$02,$40,$02
  6431.     .dc.b    $40,$02,$40,$12,$20,$1c,$20,$0c,$10,$08,$0c,$30,$03,$c0,$00,$00
  6432.     .dc.b    $00,$00,$03,$c0,$0c,$30,$10,$08,$20,$04,$20,$04,$40,$02,$40,$02
  6433.     .dc.b    $40,$02,$40,$02,$20,$34,$20,$3c,$10,$18,$0c,$30,$03,$c0,$00,$00
  6434. logo_z:    .dc.b    $00,$00,$3f,$fe,$3f,$fc,$00,$78,$00,$f0,$01,$e0,$03,$c0,$07,$80
  6435.     .dc.b    $0f,$00,$1f,$fe,$3f,$fe,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  6436. logo_s:    .dc.b    $00,$00,$7f,$fe,$7f,$fe,$70,$00,$70,$00,$7f,$fe,$7f,$fe,$00,$0e
  6437.     .dc.b    $00,$0e,$7f,$fe,$7f,$fe,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  6438. logo_v:    .dc.b    $00,$00,$38,$1e,$38,$3c,$38,$78,$38,$f0,$39,$e0,$3b,$c0,$3f,$80
  6439.     .dc.b    $3f,$00,$3e,$00,$3c,$00,$38,$00,$30,$00,$00,$00,$00,$00,$00,$00
  6440.  
  6441. font_data:
  6442.     .dc.b    $00,$00,$00,$00,$00,$00,$00,$00,$e0,$80,$ea,$2a,$ee,$0a,$0a,$00
  6443.     .dc.b    $e0,$80,$ea,$2a,$e4,$0a,$0a,$00,$e0,$80,$ea,$8a,$e4,$0a,$0a,$00
  6444.     .dc.b    $e0,$80,$ee,$84,$e4,$04,$04,$00,$e0,$80,$ec,$92,$f2,$14,$0a,$00
  6445.     .dc.b    $40,$a0,$ea,$aa,$ac,$0a,$0a,$00,$c0,$a0,$c8,$a8,$c8,$08,$0e,$00
  6446.     .dc.b    $c0,$a0,$ce,$a8,$ce,$02,$0e,$00,$a0,$a0,$ee,$a4,$a4,$04,$04,$00
  6447.     .dc.b    $80,$80,$8e,$88,$ee,$08,$08,$00,$a0,$a0,$ae,$a4,$44,$04,$04,$00
  6448.     .dc.b    $e0,$80,$ee,$88,$8e,$08,$08,$00,$e0,$80,$8e,$8a,$ee,$0c,$0a,$00
  6449.     .dc.b    $e0,$80,$ee,$2a,$ea,$0a,$0e,$00,$e0,$80,$ee,$24,$e4,$04,$0e,$00
  6450.     .dc.b    $c0,$a0,$ae,$a8,$ce,$08,$0e,$00,$c0,$a0,$a4,$ac,$c4,$04,$0e,$00
  6451.     .dc.b    $c0,$a0,$ac,$a2,$c4,$08,$0e,$00,$c0,$a0,$ac,$a2,$c4,$02,$0c,$00
  6452.     .dc.b    $c0,$a0,$a6,$aa,$ca,$0e,$02,$00,$90,$d0,$ba,$9a,$9c,$0a,$0a,$00
  6453.     .dc.b    $e0,$80,$f2,$3a,$f6,$12,$12,$00,$e0,$80,$ec,$8a,$ec,$0a,$0c,$00
  6454.     .dc.b    $e0,$80,$92,$9a,$f6,$12,$12,$00,$e0,$80,$f2,$9e,$fe,$12,$12,$00
  6455.     .dc.b    $e0,$80,$ec,$2a,$ec,$0a,$0c,$00,$e0,$80,$ee,$88,$e8,$08,$0e,$00
  6456.     .dc.b    $00,$08,$04,$fe,$04,$08,$00,$00,$00,$20,$40,$fe,$40,$20,$00,$00
  6457.     .dc.b    $10,$38,$54,$10,$10,$10,$10,$00,$10,$10,$10,$10,$54,$38,$10,$00
  6458.     .dc.b    $00,$00,$00,$00,$00,$00,$00,$00,$10,$10,$10,$10,$10,$00,$10,$00
  6459.     .dc.b    $28,$28,$28,$00,$00,$00,$00,$00,$24,$24,$7e,$24,$7e,$24,$24,$00
  6460.     .dc.b    $10,$3c,$50,$38,$14,$78,$10,$00,$00,$62,$64,$08,$10,$26,$46,$00
  6461.     .dc.b    $30,$48,$48,$30,$4a,$44,$3a,$00,$30,$10,$20,$00,$00,$00,$00,$00
  6462.     .dc.b    $08,$10,$20,$20,$20,$10,$08,$00,$20,$10,$08,$08,$08,$10,$20,$00
  6463.     .dc.b    $10,$54,$38,$7c,$38,$54,$10,$00,$00,$10,$10,$7c,$10,$10,$00,$00
  6464.     .dc.b    $00,$00,$00,$00,$30,$10,$20,$00,$00,$00,$00,$7c,$00,$00,$00,$00
  6465.     .dc.b    $00,$00,$00,$00,$30,$30,$00,$00,$00,$02,$04,$08,$10,$20,$40,$00
  6466.     .dc.b    $3c,$42,$46,$5a,$62,$42,$3c,$00,$10,$30,$50,$10,$10,$10,$7c,$00
  6467.     .dc.b    $3c,$42,$02,$0c,$30,$40,$7e,$00,$3c,$42,$02,$3c,$02,$42,$3c,$00
  6468.     .dc.b    $04,$0c,$14,$24,$7e,$04,$04,$00,$7e,$40,$78,$04,$02,$44,$38,$00
  6469.     .dc.b    $1c,$20,$40,$7c,$42,$42,$3c,$00,$7e,$42,$04,$08,$10,$10,$10,$00
  6470.     .dc.b    $3c,$42,$42,$3c,$42,$42,$3c,$00,$3c,$42,$42,$3e,$02,$04,$38,$00
  6471.     .dc.b    $00,$30,$30,$00,$30,$30,$00,$00,$00,$30,$30,$00,$30,$10,$20,$00
  6472.     .dc.b    $0e,$18,$30,$60,$30,$18,$0e,$00,$00,$00,$7e,$00,$7e,$00,$00,$00
  6473.     .dc.b    $70,$18,$0c,$06,$0c,$18,$70,$00,$3c,$42,$02,$0c,$10,$00,$10,$00
  6474.     .dc.b    $1c,$22,$4a,$56,$4c,$20,$1e,$00,$18,$24,$42,$7e,$42,$42,$42,$00
  6475.     .dc.b    $7c,$42,$42,$7c,$42,$42,$7c,$00,$1c,$22,$40,$40,$40,$22,$1c,$00
  6476.     .dc.b    $78,$24,$22,$22,$22,$24,$78,$00,$7e,$40,$40,$78,$40,$40,$7e,$00
  6477.     .dc.b    $7e,$40,$40,$78,$40,$40,$40,$00,$1c,$22,$40,$4e,$42,$22,$1c,$00
  6478.     .dc.b    $42,$42,$42,$7e,$42,$42,$42,$00,$38,$10,$10,$10,$10,$10,$38,$00
  6479.     .dc.b    $0e,$04,$04,$04,$04,$44,$38,$00,$42,$44,$48,$70,$48,$44,$42,$00
  6480.     .dc.b    $40,$40,$40,$40,$40,$40,$7e,$00,$42,$66,$5a,$5a,$42,$42,$42,$00
  6481.     .dc.b    $42,$62,$52,$4a,$46,$42,$42,$00,$18,$24,$42,$42,$42,$24,$18,$00
  6482.     .dc.b    $7c,$42,$42,$7c,$40,$40,$40,$00,$18,$24,$42,$42,$4a,$24,$1a,$00
  6483.     .dc.b    $7c,$42,$42,$7c,$48,$44,$42,$00,$3c,$42,$40,$3c,$02,$42,$3c,$00
  6484.     .dc.b    $7c,$10,$10,$10,$10,$10,$10,$00,$42,$42,$42,$42,$42,$42,$3c,$00
  6485.     .dc.b    $42,$42,$42,$24,$24,$18,$18,$00,$42,$42,$42,$5a,$5a,$66,$42,$00
  6486.     .dc.b    $42,$42,$24,$18,$24,$42,$42,$00,$44,$44,$44,$38,$10,$10,$10,$00
  6487.     .dc.b    $7e,$02,$04,$18,$20,$40,$7e,$00,$3c,$20,$20,$20,$20,$20,$3c,$00
  6488.     .dc.b    $44,$28,$7c,$10,$7c,$10,$10,$00,$78,$08,$08,$08,$08,$08,$78,$00
  6489.     .dc.b    $10,$28,$44,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7e,$00
  6490.     .dc.b    $20,$10,$08,$00,$00,$00,$00,$00,$00,$00,$3c,$04,$3c,$44,$3a,$00
  6491.     .dc.b    $40,$40,$5c,$62,$42,$62,$5c,$00,$00,$00,$3c,$42,$40,$42,$3c,$00
  6492.     .dc.b    $02,$02,$3a,$46,$42,$46,$3a,$00,$00,$00,$3c,$42,$7e,$40,$3c,$00
  6493.     .dc.b    $0c,$10,$10,$7c,$10,$10,$10,$00,$00,$00,$3a,$46,$46,$3a,$02,$3c
  6494.     .dc.b    $40,$40,$5c,$62,$42,$42,$42,$00,$10,$00,$30,$10,$10,$10,$38,$00
  6495.     .dc.b    $04,$00,$0c,$04,$04,$04,$44,$38,$40,$40,$44,$48,$50,$68,$44,$00
  6496.     .dc.b    $30,$10,$10,$10,$10,$10,$38,$00,$00,$00,$ec,$92,$92,$92,$92,$00
  6497.     .dc.b    $00,$00,$5c,$62,$42,$42,$42,$00,$00,$00,$3c,$42,$42,$42,$3c,$00
  6498.     .dc.b    $00,$00,$5c,$62,$62,$5c,$40,$40,$00,$00,$3a,$46,$46,$3a,$02,$02
  6499.     .dc.b    $00,$00,$5c,$62,$40,$40,$40,$00,$00,$00,$3e,$40,$3c,$02,$7c,$00
  6500.     .dc.b    $10,$10,$7c,$10,$10,$12,$0c,$00,$00,$00,$42,$42,$42,$46,$3a,$00
  6501.     .dc.b    $00,$00,$42,$42,$42,$24,$18,$00,$00,$00,$82,$92,$92,$92,$6c,$00
  6502.     .dc.b    $00,$00,$42,$24,$18,$24,$42,$00,$00,$00,$42,$42,$46,$3a,$02,$3c
  6503.     .dc.b    $00,$00,$7e,$04,$18,$20,$7e,$00,$18,$20,$20,$40,$20,$20,$18,$00
  6504.     .dc.b    $18,$18,$18,$18,$18,$18,$18,$00,$30,$08,$08,$04,$08,$08,$30,$00
  6505.     .dc.b    $00,$7e,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  6506.     .dc.b    $80,$40,$20,$10,$08,$04,$02,$00,$60,$92,$0c,$00,$00,$00,$00,$00
  6507.     .dc.b    $10,$10,$10,$00,$10,$10,$10,$00,$00,$00,$00,$00,$00,$00,$00,$00
  6508.     .dc.b    $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  6509.     .dc.b    $10,$78,$26,$38,$14,$20,$1e,$00,$00,$10,$3c,$10,$3c,$5a,$32,$00
  6510.     .dc.b    $00,$00,$00,$44,$42,$52,$20,$00,$00,$18,$00,$38,$04,$04,$18,$00
  6511.     .dc.b    $00,$18,$00,$3c,$08,$18,$26,$00,$00,$10,$3a,$11,$3c,$52,$22,$00
  6512.     .dc.b    $00,$00,$24,$28,$7c,$22,$24,$00,$00,$08,$5c,$6a,$4a,$5c,$08,$00
  6513.     .dc.b    $00,$00,$08,$0c,$08,$3c,$3a,$00,$00,$00,$00,$3c,$02,$02,$0c,$00
  6514.     .dc.b    $00,$00,$00,$00,$00,$00,$00,$00,$10,$3c,$10,$3e,$55,$59,$32,$00
  6515.     .dc.b    $00,$20,$42,$41,$41,$51,$20,$00,$18,$00,$3c,$02,$02,$04,$18,$00
  6516.     .dc.b    $18,$00,$3c,$08,$10,$28,$46,$00,$10,$3a,$11,$1e,$31,$51,$22,$00
  6517.     .dc.b    $20,$22,$79,$25,$24,$24,$4c,$00,$10,$3c,$08,$7e,$04,$40,$3c,$00
  6518.     .dc.b    $0c,$08,$10,$20,$10,$08,$0c,$00,$04,$5e,$44,$44,$44,$64,$08,$00
  6519.     .dc.b    $3c,$04,$00,$00,$00,$40,$3e,$00,$10,$3c,$08,$04,$40,$40,$3c,$00
  6520.     .dc.b    $20,$20,$20,$22,$22,$24,$18,$00,$04,$7e,$0c,$14,$1c,$04,$08,$00
  6521.     .dc.b    $04,$24,$7e,$24,$2c,$20,$1c,$00,$28,$10,$26,$78,$10,$10,$0c,$00
  6522.     .dc.b    $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$38,$28,$38,$00
  6523.     .dc.b    $38,$20,$20,$00,$00,$00,$00,$00,$00,$00,$00,$00,$08,$08,$38,$00
  6524.     .dc.b    $00,$00,$00,$00,$20,$10,$08,$00,$00,$00,$30,$30,$00,$00,$00,$00
  6525.     .dc.b    $00,$7c,$04,$7c,$04,$08,$10,$00,$00,$00,$7c,$04,$18,$10,$20,$00
  6526.     .dc.b    $00,$00,$08,$10,$30,$50,$10,$00,$00,$00,$10,$7c,$44,$04,$18,$00
  6527.     .dc.b    $00,$00,$00,$7c,$10,$10,$7c,$00,$00,$00,$08,$7c,$18,$28,$48,$00
  6528.     .dc.b    $00,$00,$20,$7c,$24,$28,$20,$00,$00,$00,$00,$38,$08,$08,$7c,$00
  6529.     .dc.b    $00,$00,$78,$08,$78,$08,$78,$00,$00,$00,$00,$54,$54,$04,$1c,$00
  6530.     .dc.b    $00,$00,$00,$7c,$00,$00,$00,$00,$7c,$04,$14,$18,$10,$10,$20,$00
  6531.     .dc.b    $04,$08,$10,$30,$50,$10,$10,$00,$10,$7c,$44,$44,$04,$08,$10,$00
  6532.     .dc.b    $00,$7c,$10,$10,$10,$10,$7c,$00,$08,$7c,$08,$18,$28,$48,$08,$00
  6533.     .dc.b    $20,$7c,$24,$24,$24,$24,$48,$00,$10,$7c,$10,$7c,$10,$10,$10,$00
  6534.     .dc.b    $00,$3c,$24,$44,$04,$08,$30,$00,$20,$3c,$48,$08,$08,$08,$10,$00
  6535.     .dc.b    $00,$7c,$04,$04,$04,$04,$7c,$00,$28,$7c,$28,$28,$08,$10,$20,$00
  6536.     .dc.b    $00,$60,$04,$64,$04,$08,$70,$00,$00,$7c,$04,$08,$10,$28,$44,$00
  6537.     .dc.b    $20,$7c,$24,$28,$20,$20,$1c,$00,$00,$44,$44,$24,$04,$08,$30,$00
  6538.     .dc.b    $00,$3c,$24,$54,$0c,$08,$30,$00,$08,$70,$10,$7c,$10,$10,$20,$00
  6539.     .dc.b    $00,$54,$54,$54,$04,$08,$10,$00,$38,$00,$7c,$10,$10,$10,$20,$00
  6540.     .dc.b    $20,$20,$20,$30,$28,$20,$20,$00,$10,$10,$7c,$10,$10,$20,$40,$00
  6541.     .dc.b    $00,$00,$38,$00,$00,$00,$7c,$00,$00,$7c,$04,$28,$10,$28,$40,$00
  6542.     .dc.b    $10,$7c,$08,$10,$38,$54,$10,$00,$08,$08,$08,$08,$08,$10,$20,$00
  6543.     .dc.b    $00,$10,$08,$44,$44,$44,$44,$00,$40,$40,$7c,$40,$40,$40,$7c,$00
  6544.     .dc.b    $00,$7c,$04,$04,$04,$08,$30,$00,$00,$20,$50,$08,$04,$04,$00,$00
  6545.     .dc.b    $10,$7c,$10,$10,$54,$54,$10,$00,$00,$7c,$04,$04,$28,$10,$08,$00
  6546.     .dc.b    $00,$38,$00,$38,$00,$78,$04,$00,$00,$10,$20,$40,$44,$7c,$04,$00
  6547.     .dc.b    $00,$04,$04,$28,$10,$28,$40,$00,$00,$7c,$20,$7c,$20,$20,$1c,$00
  6548.     .dc.b    $20,$20,$7c,$24,$28,$20,$20,$00,$00,$38,$08,$08,$08,$08,$7c,$00
  6549.     .dc.b    $00,$7c,$04,$7c,$04,$04,$7c,$00,$38,$00,$7c,$04,$04,$08,$10,$00
  6550.     .dc.b    $24,$24,$24,$24,$24,$08,$10,$00,$00,$10,$50,$50,$54,$54,$58,$00
  6551.     .dc.b    $00,$40,$40,$44,$48,$50,$60,$00,$00,$7c,$44,$44,$44,$44,$7c,$00
  6552.     .dc.b    $00,$7c,$44,$44,$04,$08,$10,$00,$00,$60,$00,$04,$04,$08,$70,$00
  6553.     .dc.b    $10,$48,$20,$00,$00,$00,$00,$00,$38,$28,$38,$00,$00,$00,$00,$00
  6554.     .dc.b    $10,$7e,$10,$17,$20,$28,$47,$00,$08,$3c,$10,$3e,$41,$01,$0e,$00
  6555.     .dc.b    $00,$7e,$01,$01,$01,$02,$0c,$00,$00,$7f,$04,$08,$10,$10,$0e,$00
  6556.     .dc.b    $10,$10,$16,$18,$20,$40,$3e,$00,$10,$7a,$21,$44,$04,$1e,$1d,$00
  6557.     .dc.b    $20,$4f,$40,$40,$40,$50,$4f,$00,$04,$04,$5e,$29,$51,$53,$23,$00
  6558.     .dc.b    $10,$10,$76,$19,$31,$33,$53,$00,$00,$1e,$29,$49,$51,$51,$22,$00
  6559.     .dc.b    $04,$5e,$44,$44,$44,$5e,$1d,$00,$04,$76,$25,$44,$44,$44,$38,$00
  6560.     .dc.b    $10,$08,$10,$08,$25,$45,$18,$00,$00,$10,$28,$44,$03,$01,$00,$00
  6561.     .dc.b    $1e,$44,$5e,$44,$44,$5e,$1d,$00,$08,$7e,$08,$3e,$08,$7c,$7a,$00
  6562.     .dc.b    $70,$12,$12,$3f,$52,$52,$24,$00,$20,$72,$21,$60,$62,$22,$1c,$00
  6563.     .dc.b    $04,$04,$5e,$29,$51,$51,$22,$00,$08,$78,$10,$79,$21,$21,$1e,$00
  6564.     .dc.b    $24,$28,$7e,$21,$21,$26,$20,$00,$08,$5e,$69,$49,$49,$5e,$08,$00
  6565.     .dc.b    $08,$0e,$08,$08,$3c,$4a,$30,$00,$10,$08,$40,$5e,$61,$01,$0e,$00
  6566.     .dc.b    $04,$22,$22,$22,$32,$04,$08,$00,$3c,$08,$10,$3e,$41,$19,$1e,$00
  6567.     .dc.b    $20,$26,$6a,$32,$22,$62,$23,$00,$3c,$08,$10,$3e,$41,$01,$1e,$00
  6568.     .dc.b    $20,$20,$6e,$31,$21,$61,$22,$00,$08,$08,$10,$10,$38,$25,$46,$00
  6569.     .dc.b    $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  6570.     .even
  6571.     .bss
  6572. suji:        ds.b    20    *一応かならず偶数番地から
  6573. k_or_p:        ds.b    1
  6574. mpcm_flg:    ds.b    1
  6575. no_chk:        ds.b    1
  6576. f_wait:        ds.b    1
  6577. last_note_buf:    ds.b    16+1
  6578. _fader_flag:    ds.b    1    *d7=master fader,d6=ch fader
  6579. string:        ds.b    96
  6580. filename:    ds.b    96
  6581. __opn_fn:    ds.b    100
  6582.     .even
  6583. trk_seq_tbl:        ds.b    100
  6584. _seq_wk_tbl:        ds.l    1    *!
  6585. _play_trk_tbl:        ds.l    1    *!
  6586. _common_buffer:        ds.l    1    *!
  6587. _zmusic_stat:        ds.l    1    *!
  6588. _meter:            ds.l    1    *!
  6589. env_bak:    ds.l    1    *環境変数格納アドレス
  6590. _wk_size:    ds.w    1
  6591. zm_ver:        ds.w    1    *Version
  6592. _cf:        ds.l    1
  6593. panpot_val:    ds.w    1    *パンポット計算結果格納ワーク
  6594. volume_val:    ds.w    1    *音量計算結果格納ワーク
  6595. bank_ofs:    ds.w    1
  6596. trkwkadr_adr:    ds.l    1
  6597. timbre_ofs:    ds.w    1
  6598. pan_ofs:    ds.w    1
  6599. vol_ofs:    ds.w    1
  6600. velo_ofs:    ds.w    1
  6601. mstrfdr_ofs:    ds.w    if_max+2
  6602. palet_tbl:    ds.w    3    *0:char,2:odd or even,4:KON
  6603. plane:        ds.l    1    *鍵盤書き込みプレーン
  6604. base_tadr:    ds.l    1
  6605. fopen_name:    ds.l    1
  6606. open_fn:    ds.l    1
  6607. font_addr:    ds.l    1    *フォントアドレス
  6608. ssp:        ds.l    1
  6609. global_data:    ds.b    100
  6610. opm_data:    ds.b    opm_data_size
  6611. track_data:    ds.b    dtsz*10
  6612. data_end:
  6613.         ds.b    4096
  6614. mysp:
  6615. end_of_prog:
  6616.